1. logout
- 使用session失效
- 如果配置了rememberme, 则清除rememberme认证
- 清除SecurityContextHolder
- 重定向到
/login?logout
2. 自定义配置
protected void configure(HttpSecurity http) throws Exception {
http
.logout(logout -> logout
.logoutUrl("/my/logout")
.logoutSuccessUrl("/my/index")
.logoutSuccessHandler(logoutSuccessHandler)
.invalidateHttpSession(true)
.addLogoutHandler(logoutHandler)
.deleteCookies(cookieNamesToClear)
)
...
}
如果要自定义logout功能, 可以添加LogoutHandler或LogoutSuccessHandler
3. LogoutHandler
LogoutHandler是用于定义logout功能, 主要是执行一些必要的清理. 这些类不应该抛出异常.
4. LogoutSuccessHandler
在logout成功后由LogoutFilter
调用, 以处理转发或重定向功能. 与LogoutHandler
功能几乎相同, 但它可抛出异常.
实现有:
- SimpleUrlLogoutSuccessHandler
- HttpStatusReturningLogoutSuccessHandler 适用于REST api场景.