2011-03-09 48 views
0

彈簧安全性如何支持動態角色&權限?例如,角色可以由最終用戶在運行時生成。每個角色可以包含多個權限,這些權限可以在運行時創建/更新。每個權限都基於像刪除主題這樣的標準,如果3個月內沒有任何活動。 spring安全ACL不支持它,因爲acl_entry的記錄是靜態的而不是動態的。如何定製彈簧安全以支持這種要求?基於標準的授權與春季安全檢查?

回答

1

Spring Security 3支持expression based authorization:它允許您在Spring Expression Language中將安全約束表達爲任意表達式。默認情況下,您可以在這些表達式中使用SecurityExpressionRoot的方法。

但是,您可以通過自定義MethodSecurityExpressionHandler.createEvaluationContext()來添加自己的方法,以便您可以定義任意條件並在這些表達式中使用它們。另請參閱What's the difference between @Secured and @PreAuthorize in spring secu 3?。