2014-07-09 68 views
0

我需要將角色和權限以及訪問列表添加到我們的項目中。我發現this,但我覺得它有點太基礎和特定。spring-security ACL教程

有沒有更好的教程/文章/例子,我應該閱讀或遵循之前實施?

回答

5

我不喜歡所提供教程的特殊性。我沒有鏈接到教程,但也許我可以給你幾個路標來指導你解決方案。

我所做的是創建我自己的ACL和權限。我創建了一個新類SecuredEntity,它是所有需要ACL支持的域實體的父類。當我從頭開始時,這是可能的。如果你不能擴展一個共同的祖先,顯然你可以使用組合而不是繼承。

這個SecuredEntity包含我自己的ACL實現,它基本上是一個主體到權限的映射。校長是一個帳戶ID,或一個角色或一個組。每個用戶都有一組主體,他們可以充當集合{用戶自己的帳戶,用戶的所有角色以及帳戶所屬的任何組}。

我然後實現了自定義PermissionEvaluator以檢索用於由提供Authentication指示用戶設定的主體,然後檢查所指示的對象,以確定是否用戶已經指示權限。

既默認表達式處理程序和網絡表達的處理程序註冊自定義權限評估之後,然後我可以使用表達式如

@PreAuthorize("hasPermission(#entityId, 'EntityClass', 'read')") 
@RequestMapping("/entities/{entityId}") 
public String fetchEntity(@PathVariable("entityId") String entityId) {...}