我在application.yml
:
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')
}
当我在我的应用程序中以admin
身份登录时,出现ERR_TOO_MANY_REDIRECTS
错误。
有什么方法可以解决这个问题吗?
更新
@Secured(["ROLE_ADMIN", "ROLE_DEFAULT"])
class FooController {
def index() {}
}
答案 0 :(得分:1)
redirect
不会将view
带入帐户,render
会这样做。
允许的选项包括action
,controller
,uri
,url
,params
,fragment
和/或域实例。
所以,你可以做点什么,
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。