2009-11-11 54 views
0

背景: 我正在開發的grails應用程序具有幾個粒度安全級別。首先,最小粒度是在控制器級別。您可以查看特定頁面,或者您不能(我正在使用Acegi spring security插件)。第二級安全性通過AOP方法在服務層中。您可以根據與該對象關聯的方式使用傳遞的屬性訪問某個服務方法。第三層再次處於服務層,再次通過AOP提供便利,AOP爲服務方法提供建議,然後限制或更改返回的內容。查看等級安全模式

問題 我的問題的最終關卡是顯示級別。某些用戶不會獲得指向特定頁面的鏈接,也無法查看其他信息。什麼是實施這個最好的方法?目前我使用安全taglib並使用ifAnyGranted或ifAllGranted等直接在我的gsp上。未來可能需要更復雜的權限。如果這個安全性被拉回控制器,然後傳遞給模型,你可以做一些事情,如<g:if test="${hasSomeViewRight}"></g:if>

我覺得這兩種方式都不是很簡潔。有更好的模式嗎?

回答

0

是的,它應該被拉回控制器。

這就是說,在asp.net mvc中,通常通過具有視圖模型來完成,因此您的模型不會被填充與特定視圖相關的東西。

Ps。我認爲像「canDeleteProducts」,canUpdateProducts等「hasSomeViewRight」。

+0

謝謝,我希望得到更多的討論。 – 2009-11-13 21:31:41