2017-04-13 60 views
0

我不明白爲什麼Authority在JHipster中如此複雜?創建只有一個字段name的另一個實體的原因是什麼?此外,它有一個csv文件,該文件使用Liquibase將模板上傳到數據庫。
有一個想法,我創建一個枚舉(見this answer):爲什麼權威如此複雜?

@Entity 
@Table 
public enum Authority { 

    USER, ADMIN; 

    @Id 
    private String title = "ROLE_" + name(); 

} 

然後我決定,這是沒有必要的了。它可以是沒有註釋的枚舉,只是一個Set(甚至是EnumSet):

private Set<Authority> authorities = new HashSet<>(); 

我錯過了什麼?也許這對JPA很有用?
我想在GitHub上創建一個問題,但我認爲這是一個更好的地方。

回答

1

GrantedAuthority由Spring Security定義,默認實現SimpleGrantedAuthority只有一個角色名稱,但它可以擴展爲具有更多屬性,所以我猜JHipster的實體啓用了這種可能性。

+0

但實體如何幫助與GrantedAuthority合作?我仍然可以做'新的SimpleGrantedAuthority(Authority.ADMIN.toString())'。我只是認爲在應用程序的註冊和其他部分中不需要authorityRepository.findOne(「ROLE_USER」),我們可以使用'Collections.singleton(Authority.USER)'。 – Feeco

+1

在我看來,你只能想象一個靜態的角色列表。在網關的情況下,您可以輕鬆地從用戶管理中創建新的角色,這些角色不由網關代碼本身解釋(因此不是常量,也不是枚舉),並且可以通過代理微服務從JWT聲明中解釋。 –

+0

事實上,似乎這就是重點。 – Feeco

相關問題