我正在使用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/

10-11 08:04