安全grails spring安全控制器

时间:2014-12-09 14:13:59

标签: grails spring-security grails-plugin grails-controller grails-2.3

我在Grails项目中使用spring security插件。为了保护网址,我使用的是interceptUrlMap

我的用户和角色类分别为User.groovyRole.groovy。基于这些类,s2-quickstart脚本生成了UserController.groovyRoleController.groovy

当我想保护UserController.groovy时会出现问题。我的要求是我不允许所有用户创建新用户。因此,对于具有适当角色权限的用户,需要阻止UserController的某些操作。

但无论我如何尝试限制访问,我都会看到UserController的所有操作始终都可以访问。

有人可以解释我哪里出错了。任何帮助都非常感谢。

2 个答案:

答案 0 :(得分:1)

更好地使用注释而不是在Config.groovy中定义规则。这有两个方面的帮助,即首先,热重新加载将始终有效,其次,您可以在Config.groovy中轻松覆盖任何规则。这意味着您可以在Config.groovy中使用注释和普通规则。

所以在Config.groovy中更改此内容

grails.plugin.springsecurity.securityConfigType = "Annotation"

并开始保护您的控制器或操作,如:

import grails.plugin.springsecurity.annotation.Secured

@Secured(["ROLE_MRU"])
class UserController {

    def edit() {
        // action code
    }

    @Secured(["ROLE_ADMIN"])
    def show() {
        // action code
    }
}

答案 1 :(得分:0)

我设法解决了这个问题。问题是我在应用程序仍在运行时编辑Config.groovy。热部署没有发生。

重新启动应用程序后,功能开始工作。

感谢您的帮助。