使用 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 : "/"
}
}
我是 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 : "/"
}
}