【发布时间】:2014-12-09 14:13:59
【问题描述】:
我在我的 Grails 项目中使用 spring 安全插件。为了保护 URL,我使用interceptUrlMap。
我的用户和角色类分别是 User.groovy 和 Role.groovy。基于这些类,s2-quickstart 脚本生成了UserController.groovy 和RoleController.groovy
当我想保护UserController.groovy 时,问题就出现了。我的要求是我不能允许所有用户创建一个新用户。因此,对于具有适当角色权限的用户,需要阻止 UserController 的某些操作。
但是无论我如何尝试限制访问,我看到UserController 的所有操作总是可以访问的。
谁能解释我哪里出错了。非常感谢任何帮助。
【问题讨论】:
-
请分享一些代码。至少
UserController.groovy和Config.groovy。 -
grails.plugin.springsecurity.interceptUrlMap = [ '/':['permitAll'], '/**/js/**':['permitAll'], '/**/css /**':['permitAll'], '/**/images/**':['permitAll'], '/**/data/**':['permitAll'], '/**/ favicon.ico':['permitAll'], '/login/**':['permitAll'], '/logout/**':['permitAll'], '/user/edit/**':[ 'ROLE_ADMIN', 'ROLE_MRU', 'ROLE_FINANCE', 'ROLE_PROCUREMENT', 'ROLE_DATABASE_ADMIN'], '/user/**':['ROLE_ADMIN'], ]
-
对不起,我发布代码的方式。我没有足够的字符来发布条目代码
-
问题在于编辑操作。如您所见,我已授予 ROLE_MRU 编辑用户的权限。但是当我尝试访问 url /user/edit/1 时,访问被阻止。我确实有一个 id 为 1 的用户,所以该网址完全有效。
-
至于UserController.groovy,控件甚至没有到达action。我已经通过在编辑操作的最开始添加一些打印语句来确认这一点。什么都没有打印出来。所以问题一定是 Config.groovy。
标签: grails spring-security grails-plugin grails-controller grails-2.3