1、退出登录的配置,退出失败
退出登录logout实现方式
http.logout().
logoutUrl("/logout").
logoutSuccessUrl("/index");
- logoutUrl:表示退出的路径
- logoutSuccessUrl:表示退出成功之后去的页面
这样写完退出登录会报错。
2、出错原因:
SpringSecurity3.2开始,默认会启动CSRF防护,一旦启动了CSRF防护,“/logout” 需要用post的方式提交,SpringSecurity才能过滤。
3、解决方案
方式一:配置文件直接关闭CSRF防护
http.formLogin().and().csrf().disable(); //关闭csrf防护
http.logout().
logoutUrl("/logout").
logoutSuccessUrl("/index");
方式二:官方建议使用POST请求退出登陆,并携带CRSF令牌
http.logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout")).
logoutSuccessUrl("/index").permitAll();