以编程方式注销用户

时间:2012-06-12 06:58:54

标签: grails spring-security

用户登录后,我会检查他们的角色。如果他们没有角色,我想将其注销。这就是我现在正在做的事情:

if (SpringSecurityUtils.ifAllGranted('ROLE_ADMIN')) {
    redirect(uri: '/book/edit')
}
else if (SpringSecurityUtils.ifAllGranted('ROLE_USER')) {
    redirect(uri: '/book/list')
}
else {
    redirect(uri: '/login/auth')
}

这不起作用,因为有一个递归重定向到/login/auth。如何正确执行此操作(注销然后重定向到/login/auth)?

2 个答案:

答案 0 :(得分:9)

顺便说一下,要注销当前登录的用户,您可以进行以下调用:

SecurityContextHolder.clearContext()

答案 1 :(得分:7)

class AnyController {    
    def logoutHandlers

    def method = {
    ...
        logoutHandlers.each { handler ->
            handler.logout(request, response, springSecurityService.authentication)
        }
    }
}