實際上,我有一個適用于 rbac 的身份驗證。問題是,我遇到了一個用戶被洗掉的情況,但在資料庫中,用戶 ID 和角色仍然存在。
重新創建用戶后,他獲得了具有此 ID 的前用戶的角色。Acutally 我無法洗掉已被洗掉的用戶的用戶角色,因為它是一個列舉..
是否可以在保持這種列舉原則的同時創建用戶和角色之間的關系?還是另一種解決方案?
public class AppUser {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
....
@ElementCollection(fetch = FetchType.EAGER)
@Enumerated(EnumType.STRING)
List<AppUserRole> appUserRoles;
}
public enum AppUserRole implements GrantedAuthority {
ROLE_ADMIN, ROLE_DEMO;
public String getAuthority() {
return name();
}
}
uj5u.com熱心網友回復:
使用 delete 洗掉物體時,@ElementCollection會自動級聯。通過 SQL 執行此操作時(可能)不是這種情況,具體取決于在您的資料庫中應用級聯規則的方式。
但是隨著您的設定應該自動發生。
另請參閱https://stackoverflow.com/a/7696147/2696260
uj5u.com熱心網友回復:
以下是如何@ElementCollection創建角色表的示例(PostgreSQL 語法):
CREATE TABLE user_roles (
user_id int,
role text,
PRIMARY KEY (user_id, role),
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE
);
帶有 ON DELETE CASCADE 的外鍵確保在洗掉用戶時洗掉關聯的角色。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/435139.html
下一篇:是什么導致Spring在使用AnnotationConfigApplicationContext時無法加載配置類?
