退出(logout)
退出功能是通过 Servlet 容器中的Filter实现的(默认情况下),这个 Filter 会拦截针对 “/logout” 的请求。因此,为应用添加退出功能只需添加如下的链接即可:
<a th:href="@{/logout}">Logout</a>
当用户点击这个链接的时候,会发起对 “/logout” 的请求,这个请求会被 Spring Security 的 LogoutFilter 所处理。
用户会退出应用,所有的 Remember-me token 都会被清除掉。
在退出完成后,用户浏览器将会 重定向到 “/login?logout”,从而允许用户进行再次登录。
如果希望用户被重定向到其他的页面,如应用的首页,那么可以在 configure() 中进行如下的配置:
@override
protected void configure(HttpSecurity http) throws Exception {
http
.formLogin()
.loginPage("/login");
.and()
.logout()
.logoutSuccessUrl("/")
...
}
在本例中,调用 logoutSuccessUrl() 表明在退出成功之后,浏览器需要重定向到 “/”。
除了 logoutSuccessUrl() 方法以外,还可以重写默认的 LogoutFilter 拦截路径,可以通过调用 logoutUrl() 方法实现这一功能:
.logout()
.logoutSuccessUrl("/")
.logoutUrl("/signout");
Last updated