我正在开发一个使用 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 中的create、remove 或其他服务时,用户是否具有指定的角色并不重要。它就像那里没有映射一样。
是否有可能其他一些设置覆盖了interceptUrlMap?如果是这样,我应该从哪里开始寻找?
我应该提到我们必须使用 Grails 1.3.8
更新:我尝试了下面提到的小写字母,但仍然失败。但是,如果我只是做了一个顶级(“/controllername/**”)控制器条目(与在控制器中指定一个操作相反,它会限制访问。不幸的是,我们想做“/controllername/create”类型的安全性。有什么想法吗?