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

How to redirect user to different pages after logout with Spring Security and Grails

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

如果用户是 ROLE_ADMIN,注销后他将被重定向到他的主页 adminUser/Homepage.gsp

如果用户是 ROLE_USER,注销后他将被重定向到他的主页 User/Homepage.gsp

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

你有两个选择

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

重定向用户

2) 创建自定义注销处理程序,遵循此 link https://grails-plugins.github.io/grails-spring-security-core/guide/logoutHandlers.html

我正在发布我的解决方案,非常感谢您的帮助。这种方法简单易行,您只需要从注销控制器的请求变量中调用注销方法。

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 : "/"
            }
        }