【发布时间】:2012-12-18 20:56:17
【问题描述】:
我正在开发一个使用 Grails 的大型 Web 应用程序,我们正在尝试实现角色安全性的使用。系统设置时,grails 基本上是授予 CAS 身份验证用户完全的角色访问权限,但是当我为每个控制器方法创建特定角色时,它完全忽略了角色并继续允许经过身份验证的用户完全访问。
这是我在 Config.groovy 中所做的:
grails.plugins.springsecurity.securityConfigType = SecurityConfigType.InterceptUrlMap
grails.plugins.springsecurity.interceptUrlMap = [
"/controllerName/create": [ "hasRole( 'ROLE_CREATE' )" ],
"/controllerName/remove": [ "hasRole( 'ROLE_DELETE' )" ],
"/controllerName/listEntries": [ "hasRole( 'ROLE_VIEW' )" ],
"/controllerName/listAllEntries": [ "hasRole( 'ROLE_VIEW' )" ],
"/controllerName/getDefaultCategories": [ "hasRole( 'ROLE_VIEW' )" ]
]
UrlConfig.goovy 没有 controllerName 条目。
当应用程序调用controllerName 中的create、remove 或其他服务时,用户是否具有指定角色并不重要。它就像那里没有映射一样。
是否有可能其他一些设置覆盖了interceptUrlMap?如果是这样,我应该从哪里开始?
我应该提到我们必须使用 Grails 1.3.8
更新:我尝试了下面提到的小写字母,但仍然失败。但是,如果我只是做了一个顶级(“/controllername/**”)控制器条目(与在控制器中指定一个操作相反,它会限制访问。不幸的是,我们想做“/controllername/create”类型的安全性。有什么想法吗?
【问题讨论】:
-
“用户是否具有指定的角色并不重要。它就像那里没有映射一样” - 对不起,但究竟发生了什么?您收到 404 或您无法通过 403 错误访问页面?
-
该方法正常运行。没有错误。