我在Grails项目中使用spring security插件。为了保护网址,我使用的是interceptUrlMap
。
我的用户和角色类分别为User.groovy
和Role.groovy
。基于这些类,s2-quickstart
脚本生成了UserController.groovy
和RoleController.groovy
当我想保护UserController.groovy
时会出现问题。我的要求是我不允许所有用户创建新用户。因此,对于具有适当角色权限的用户,需要阻止UserController
的某些操作。
但无论我如何尝试限制访问,我都会看到UserController
的所有操作始终都可以访问。
有人可以解释我哪里出错了。任何帮助都非常感谢。
答案 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。热部署没有发生。
重新启动应用程序后,功能开始工作。
感谢您的帮助。