【问题标题】:How to redirect user to different pages after logout with Spring Security and Grails使用 Spring Security 和 Grails 注销后如何将用户重定向到不同的页面
【发布时间】:2015-08-17 03:08:15
【问题描述】:

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

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

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

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

【问题讨论】:

标签: grails spring-security


【解决方案1】:

你有两个选择

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-02-20
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 2017-12-12
      • 2014-08-11
      • 1970-01-01
      • 2014-07-23
      • 2014-07-11
      相关资源
      最近更新 更多