2012-09-15 72 views
0

正如標題所說,我需要在database中創建一個動態menu stored作爲樹,並且有計劃在其上放置一個接口。現在,我需要決定如何實施基於適合此要求的市場的Access Control Layer如何將Java安全層(Apache Shiro | Spring Security)集成到webapp菜單系統

我大量使用Spring IoC,spring mvc等....與hibernate爲我的項目。我以前使用過apache shiro,這並不壞。只是社區還很年輕,所以需要花時間回答關於shiro有貢獻的問題,而且沒有大量文檔。

我還在使用shiro反正刨,因爲我的經驗,我沒有與spring security。現在第一個問題應該是是是一個好主意,以配合ACL菜單系統|網站導航系統如果有人能分享他的經驗,我會很高興。

所以在我的頭頂,我有一點usersrolesrightsusers_rightsroles_users這種模式,roles_rights

users //contains creds and user detail 
roles //contains roles 
rights // contains rights (including menu entries matching rights, if i have to tie them) 
roles_users //many-to-many roles-users with extra columns mapped as entity 
roles_rights // many-to-many roles-rights with extra columns mapped as entity 

users_rights //many-to-many users-rights mapped as entity with extra columns. special rights for user and overwrite the overall rights given by roles. can deny rights given by a role or add rights not inside any roles 

所以在權利表我能有這樣的:

id 
    name // in the form of admin:users:list 
    description 
    menu_name // unique name what shows on page 
    menu_url 

唯一的問題是我該如何處理子菜單?自我多對多的權利? 最後它變得如此複雜。所以我想要有其他的觀點,見解,建議。謝謝

回答

1

我希望我明白你想要什麼。
我認爲使用自我外鍵是有效的。
但是,我建議您在創建子菜單時或在更新其中一個父項後計算「子菜單的ACL值」
因此,在ACL檢查子過程中,您不會花時間計算子菜單菜單。
對不起,如果我沒有正確使用這些術語,
一般來說,我的意思是如果你在樹上有一些值,並且這個值可能取決於樹中父節點的值,
您應該考慮在插入,更新或在其中一個祖先進行任何更改期間計算子節點/葉子的值。

+0

您好,非常感謝您的回覆。所以沒有什麼是錯的結構和我如何概念化acl +菜單? –

+0

在我的小見解中,這很好 –