Spring Security默认的退出登录URL为/logout
,退出登录后,Spring Security会做如下处理:
是当前的Sesion失效;
清除与当前用户关联的RememberMe记录;
清空当前的SecurityContext;
重定向到登录页。
Spring Security允许我们通过配置来更改上面这些默认行为。
自定义退出登录行为
我们在Spring Security配置中添加如下配置:
1 | ...... |
上面配置了退出登录的URL为/signout
,退出成功后跳转的URL为/signout/success
,退出成功后删除名称为JSESSIONID
的cookie。
在Controller中添加和/signout/success
对应的方法:
1 | "/signout/success") ( |
接着将/signout/success
添加到免认证路径里。启动项目,登录后访问/signout
:
可看到退出成功,并且请求重定向到了/signout/success
。
除了指定logoutUrl
外,我们也可以通过logoutSuccessHandler
指定退出成功处理器来处理退出成功后的逻辑:
1 |
|
MyLogOutSuccessHandler
实现LogoutSuccessHandler
:
1 |
|
效果和上面一样:
源码链接:https://github.com/wuyouzhuguli/SpringAll/tree/master/60.Spring-Security-Logout