使用 Spring Security 和 Grails 注销后如何将用户重定向到不同的页面
Posted
技术标签:
【中文标题】使用 Spring Security 和 Grails 注销后如何将用户重定向到不同的页面【英文标题】:How to redirect user to different pages after logout with Spring Security and Grails 【发布时间】:2015-08-17 03:08:15 【问题描述】:我是 Groovy 和 Grails 的新手。我使用 Spring Security 插件使用数据库请求的请求映射开发了一个应用程序。我想根据角色在注销后自定义重定向到主页。
如果用户是 ROLE_ADMIN,注销后他将被重定向到他的主页视图 adminUser/Homepage.gsp
如果用户是 ROLE_USER,注销后他将被重定向到他的主页视图 User/Homepage.gsp
我无法根据用户角色获得任何自定义身份验证重定向。
【问题讨论】:
我猜你必须创建一个自定义注销方法,如果你可以使用SecurityContextHolder.clearContext()
以编程方式注销用户,然后根据那里的角色重定向用户
还有创建自定义注销处理程序的选项,您可以点击此链接grails-plugins.github.io/grails-spring-security-core/guide/…
@AnantKolvankar - ***.com/questions/5727380/… 这解决了我...感谢您帮助我
我已经发布了一个答案如果您认为它有帮助,请接受:)
【参考方案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 : "/"
【讨论】:
以上是关于使用 Spring Security 和 Grails 注销后如何将用户重定向到不同的页面的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Spring Security 模拟身份验证和授权
如何使用 Spring-Security 3 和 Hibernate 4 将 spring security xml 配置 hibernate 转换为 java config
Spring Framework,Spring Security - 可以在没有 Spring Framework 的情况下使用 Spring Security?
使用 Spring 和 Spring Security 正确注入 SessionFactory
如何使用spring-security通过用户名和密码登录?
Spring 框架 4.0 和 Spring security 3.2.4 上的 Spring Security SAML 扩展