2014-02-14 65 views
1

我對Spring Security框架,特別是ACL非常陌生。經過幾個小時的閱讀,我認爲我掌握了大部分我需要做的事情來開始保護我的應用程序。在Spring Security ACL中使用AOP

然而令我困擾的是:雖然很容易找到有關如何讀取ACL權限的使用說明(例如,通過@PreAuthorize),但當您想要創建並保留它們時,它開始變得混亂。

Spring Security手冊告訴我們,他們不想打擾任何標準,但我們鼓勵使用AOP。許多教程和答案都是直接在其業務代碼中使用AclService,從而破壞了流程中的「關注點分離」原則。

那我該怎麼辦?職業選手如何做?我應該嘗試在自定義註釋上定義創建/刪除ACL條目的切入點嗎?還是應該「污染」我的代碼與ACL的關注?

回答

0

好吧,我現在明白好多了,工作了一週後,這些事情是如何工作的。

首先,我們應該試着堅持簡單,樸素的使用ACL的方式,直接在每個服務層方法中使用AclService。構建一個抽象幫助很多(基本上@Service bean中的一個grantAccess(username,object,permission,...)方法)。

一旦所有事情都通過ACL寫入和@PreAuthorize/@ PostAuthorize/@ Secured el測試進行保護,那麼您可以開始考慮AOP來清除您的代碼,以免出現所有安全問題。您使用ACL寫入組成了一個服務方法的列表,並且您將Advices添加到它們以擁有一個處理所有安全性的中心位置。

Spring Security ACL非常易於設置和理解,即使在現有項目與現有用戶(您將不得不建立一個遷移腳本)。