2011-05-02 73 views
1

想象一下,用戶可以在系統中擁有一個或多個角色。在 登錄後,用戶必須選擇這些角色。此時只有 這個選擇的角色應該由spring security檢查。彈簧安全 - 一個主動角色

例如用戶ROLE_A,ROLE_B

requestmaps:

/電子書/ **

- > ROLE_A,ROLE_B /作家/ ** - >作用

正常的行爲是,用戶可以訪問所有定義 行動。在我的特殊情況下,用戶將選擇ROLE_A,然後僅爲/ author/**操作獲取 訪問權限。換句話說,有可能 在安全上下文中定義一個活動角色,這樣彈簧安全性會根據這個單一角色執行安全檢查嗎?

回答

2

雖然我建議避免這種方法,但從最終用戶的角度來看,我瞭解有時候有些需求超出了您的控制範圍。因此,隨着中說,請注意,您已經爲春季安全定義的Person對象使用應包含以下內容:

Set<Role> getAuthorities() { 
    PersonRole.findAllByPerson(this).collect { it.role } as Set 
} 

如果定義某處屬性,指定你選擇的角色,僅修改上面的方法,只返回該角色。

+0

感謝您的解決方案!我的方法是在登錄後修改用戶密碼類中的權限集合,以便此集合中只存在一個角色。用戶也可以切換角色。此時你必須再次修改這個集合。 – hitty5 2011-05-03 07:58:26