这篇文章给大家分享的是有关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中如何动态加载角色”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://my.oschina.net/u/2427561/blog/3089848