这篇文章给大家分享的是有关spring中如何动态加载角色的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
一、新增角色实体
@Entity public class Role { @Id @GeneratedValue private long rid; private String name; //角色名 private String descprtion; //角色描述 public long getRid() { return rid; } public void setRid(long rid) { this.rid = rid; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescprtion() { return descprtion; } public void setDescprtion(String descprtion) { this.descprtion = descprtion; } }
二、添加角色操作接口
public interface RoleRepository extends JpaRepository<Role,Long> { }
三、修改UserInfo的用户角色
@ManyToMany(fetch = FetchType.EAGER) //立即从数据库中进行性加载数据; @JoinTable(name = "UerRole",joinColumns = {@JoinColumn(name = "uid")},inverseJoinColumns = {@JoinColumn(name = "role_id" )}) private List<Role> roles;
四、修改CustomUserDetailService
// 定义权限列表 List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>(); // 用户拥有的权限 for (Role role:userInfo.getRoles()){ authorities.add(new SimpleGrantedAuthority("ROLE_"+role.getName())); }
五、修改DataInit
@Service public class DataInit { @Autowired private UserInfoRepository userInfoRepository; @Autowired private PasswordEncoder passwordEncoder; @Autowired private RoleRepository roleRepository; @PostConstruct public void dataInit(){ List<Role> roles = new ArrayList<>(); Role adminRole = new Role(); adminRole.setName("admin"); adminRole.setDescprtion("管理员"); Role userRole = new Role(); userRole.setName("normal"); userRole.setDescprtion("普通用户"); roleRepository.save(adminRole); roleRepository.save(userRole); roles.add(adminRole); roles.add(userRole); UserInfo admin = new UserInfo(); admin.setUsername("admin"); admin.setPassword(passwordEncoder.encode("123")); admin.setRoles(roles); userInfoRepository.save(admin); roles = new ArrayList<>(); roles.add(userRole); UserInfo user = new UserInfo(); user.setUsername("user"); user.setPassword(passwordEncoder.encode("123")); user.setRoles(roles); userInfoRepository.save(user); } }
感谢各位的阅读!关于“spring中如何动态加载角色”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。