2012-07-10 56 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