2012-07-10 68 views
1

我正在使用spring-security-core我有十多個控制器,我想檢查用戶是否登錄了所有的動作,我知道在所有動作中做一個if(springSecurityService.isLoggedIn())的方法,有沒有其他辦法可以做到這一點,而不是在所有的行動/控制器中編寫相同的邏輯Grails安全檢查

回答

3

如果你想完全拒絕對動作的訪問,有幾種方法可以做到這一點。

您可以將@grails.plugins.springsecurity.Secured註釋放在控制器類或操作方法上。您還可以通過創建請求映射來指定需要通過URL進行身份驗證的內容。您可以創建一個請求映射域對象,也可以使用grails.plugins.springsecurity.controllerAnnotations.staticRules映射在您的Config.groovy中創建一個靜態請求映射。

Spring Security Core manual有更多的細節。

1

如果是我,我會採取ataylors答案更進一步。按照他的說法,但是不要在所有控制器中複製和粘貼相同的代碼,只需將其放入Controller.groovy模板中,然後運行generate-all命令。模板對於這樣的事情非常強大,如果您保持模板最新,您可以根據需要輕鬆更改10個控制器或100個控制器,如果/當您的應用程序發展時。

如何安裝模板:

http://grails.org/doc/latest/ref/Command%20Line/install-templates.html