我是Groovy和Grails的新手。我使用数据库请求的请求映射使用Spring Security插件开发了一个应用程序。我想根据角色在注销后自定义重定向到主页。
如果用户是ROLE_ADMIN,退出后他将被重定向到他的主页视图adminUser / Homepage.gsp
如果用户是ROLE_USER,退出后他将被重定向到他的主页视图User / Homepage.gsp
我无法根据用户角色获得任何自定义身份验证重定向。
答案 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 : "/"
}
}