2017-10-04 48 views
1

我有这对我的application.yml春季安全 - Grails的3.2.2 - ERR_TOO_MANY_REDIRECTS

grails.plugin.springsecurity.successHandler.alwaysUseDefault = true 
grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/l/loggedIn' 

而且l/loggedIn的样子:

def loggedIn() { 
    User user = springSecurityService.currentUser 

    def roleDefault = Role.findByAuthority("ROLE_DEFAULT") 
    if(user.authorities.contains(roleDefault)) 
     redirect(controller: 'foo', action:'index') 

    def roleAdmin = Role.findByAuthority("ROLE_ADMIN") 
    if(user.authorities.contains(roleAdmin)) 
     redirect(view: 'index') 

} 

当我登录在我的应用程序得到adminERR_TOO_MANY_REDIRECTS错误。

任何方式解决这一问题?


更新

@Secured(["ROLE_ADMIN", "ROLE_DEFAULT"]) 
class FooController { 

    def index() {} 
} 
+0

它只发生在管理员用户@AdeelAnsari –

回答

1

redirect不采取view到帐户,render一样。

允许的选项是,actioncontrolleruriurlparamsfragment,和/或结构域的实例。

所以,你可以这样做,

def loggedIn() { 
    User user = springSecurityService.currentUser 

    def roleDefault = Role.findByAuthority("ROLE_DEFAULT") 
    if(user.authorities.contains(roleDefault)) 
     redirect(controller: 'foo', action:'index') 

    def roleAdmin = Role.findByAuthority("ROLE_ADMIN") 
    if(user.authorities.contains(roleAdmin)) 
     redirect(controller: 'foo', action:'adminIndex') 
} 

然后在你的控制器同时定义actions,在适当的意见可用。

@Secured(["ROLE_ADMIN", "ROLE_DEFAULT"]) 
class FooController { 

    def index() {} 

    def adminIndex() {} 

} 

阅读docs

+1

使用重定向(uri:“/”)解决了问题,谢谢。 –

+1

很高兴帮助。 –