我正在使用Grails的大型Web应用程序上工作,我们正在尝试实现角色安全性的使用。设置系统时,grails基本上是授予对CAS身份验证用户的完整角色访问权限,但是当我为每种 Controller 方法创建特定角色时,它只是完全忽略了角色并继续允许对身份验证用户的完全访问权限。
这是我在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 / **”) Controller 条目(而不是在 Controller 内指定操作,则它会限制访问。不幸的是,我们想进行“/ controllername / create”类型的安全性。有什么想法吗?
最佳答案
URL必须为小写,启动时应发出警告。将“controllerName”更改为“controllername”,将“listAllEntries”更改为“listallentries”,依此类推。
关于grails - 被覆盖的interceptUrlMap?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13941363/