我在我的Grails项目中使用spring安全插件。为了保护 URL,我正在使用 interceptUrlMap
.
我的用户类和角色类分别User.groovy
和Role.groovy
。基于这些类,s2-quickstart
脚本生成了UserController.groovy
和RoleController.groovy
当我想保护UserController.groovy
时出现问题。我的要求是我不能允许所有用户创建新用户。因此,需要为具有适当角色权限的用户阻止UserController
的某些操作。
但是,无论我如何尝试限制访问,我都看到UserController
的所有操作始终是可访问的。
谁能解释一下我哪里出错了。任何帮助都非常感谢。
最好使用注释,而不是在 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
}
}
我已经设法解决了这个问题。问题是我在应用程序仍在运行时编辑 Config.groovy。未进行热部署。
重新启动应用程序后,该功能开始工作。
感谢您的所有帮助。