grails 2.2.2中的springSecurity.denied.message

Posted

技术标签:

【中文标题】grails 2.2.2中的springSecurity.denied.message【英文标题】:springSecurity.denied.message in grails 2.2.2 【发布时间】:2013-09-26 11:20:49 【问题描述】:

我正在尝试根据用户的角色为用户设置不同的主页

grails.plugins.springsecurity.successHandler.defaultTargetUrl = "/home"

 grails.plugins.springsecurity.securityConfigType="InterceptUrlMap"
 grails.plugins.springsecurity.interceptUrlMap=[
....
....
'/User/**':['ROLE_USER'],
'/home/**':['ROLE_ADMIN','ROLE_USER'],
....
....
]

我设置成功处理程序控制器“HomeController”

因为我重定向了角色明智的主页

import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils

class HomeController 
   def index() 

      if (SpringSecurityUtils.ifAllGranted('ROLE_ADMIN')) 
         redirect controller: '...', action: '...'
         return
      
      if (SpringSecurityUtils.ifAllGranted('ROLE_USER')) 
         redirect controller: 'user', action: 'show'
         return
      

   

当我通过 ADMIN Profile 登录时,它会点击“HomeController”并重定向

但是当我尝试从用户配置文件登录时,它给了我一个错误 springSecurity.denied.message...

【问题讨论】:

确保您的用户拥有 ROLE_USER 并有权访问重定向的操作。如果你评论了interceptUrlMap并且它可以工作,那可能是一个角色问题。 但是在我的代码中,当我通过管理员登录时,它会命中 Home 控制器... 我更新了我的问题,请检查一下 【参考方案1】:

问题似乎与您的重定向调用有关:

redirect controller: 'UserController'

应该是

redirect controller: 'user'

因为在这种情况下,您遵循 url 约定::8080/your-app/user/show

【讨论】:

我写了用户...但它仍然给出相同的错误..但它仍然没有命中家庭控制器.. 你的用户有ROLE_USER? 是的...我的用户有一个角色 ROLE_USER【参考方案2】:
'/user/**':['ROLE_USER'],

改为

'/User/**':['ROLE_USER'],

【讨论】:

以上是关于grails 2.2.2中的springSecurity.denied.message的主要内容,如果未能解决你的问题,请参考以下文章

在 Grails 和 SpringSecurity 中访问 Oracle Internet Directory (OID) 中的嵌套 LDAP 角色

Grails 中的 Spring Security 提供授权

Grails/SpringSecurity:登录和注销

从 Grails 中的 Cobertura 报告中排除插件

Grails:弹簧安全插件 - 错误 springsecurity.GormPersistentTokenRepository

Grails:乐观锁定,StaleObjectStateException 与 Spring Security 会话中的域,更新计数器