您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。