2017-10-04 64 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

很高興幫助。 –