使用Spring Security和Grails注销后如何将用户重定向到不同的页面

时间:2015-06-03 04:50:09

标签: grails spring-security

我是Groovy和Grails的新手。我使用数据库请求的请求映射使用Spring Security插件开发了一个应用程序。我想根据角色在注销后自定义重定向到主页。

如果用户是ROLE_ADMIN,退出后他将被重定向到他的主页视图adminUser / Homepage.gsp

如果用户是ROLE_USER,退出后他将被重定向到他的主页视图User / Homepage.gsp

我无法根据用户角色获得任何自定义身份验证重定向。

2 个答案:

答案 0 :(得分:0)

您有两个选择

1)创建自定义注销方法,您可以使用SecurityContextHolder.clearContext()以编程方式注销用户,然后根据ROLES重定向用户

2)创建自定义注销处理程序,请点击此链接https://grails-plugins.github.io/grails-spring-security-core/guide/logoutHandlers.html

答案 1 :(得分:0)

我发布了我的解决方案非常感谢您的帮助。这种方法简单易行,您只需从登出控制器中的请求变量中调用logout方法即可。

def roles = SpringSecurityUtils.getPrincipalAuthorities()

        for (String role in roles) {
            if (role.equals("ROLE_ADMIN")) {
                request.logout()
                redirect uri : "/admin/logoutPage"
            }
            else if (role.equals("ROLE_USER")) {
                request.logout()
                redirect uri : "/user/logoutPage"
            }
            else {
                request.logout()
                redirect uri : "/"
            }
        }