文章目录
1、最开始我也不知道为什么写了退出登录的配置,却退出失败
退出登录logout实现方式
http.logout().logoutUrl("/logout").
logoutSuccessUrl("/test/hello").permitAll();
- logoutUrl:表示退出的路径
- logoutSuccessUrl:表示退出成功之后去的页面
报错的页面
2、解决方式
出错原因:
SpringSecurity3.2开始,默认会启动CSRF防护,一旦启动了CSRF防护,“/logout” 需要用post的方式提交,SpringSecurity才能过滤。
方式一:配置文件直接关闭CSRF防护
http.formLogin().and().csrf().disable(); //关闭csrf防护
方式二:官方建议使用POST请求退出登陆,并携带CRSF令牌
http.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).
logoutSuccessUrl("/test/hello").permitAll();
3、其他
3.1 当关闭CSRF防护时,部分的页面可能会无法刷新,甚至报错
<meta name="_csrf" th:content="${_csrf.token}"/>
<meta name="_csrf_header" th:content="${_csrf.headerName}"/>
这两个代码是做CSRF防护的,深入了解可以去网上查下