お仕事でログアウト前に事前処理を入れる必要があったので、
対応した時のちょっとしたメモ。
##実装
SampleConfiguration.java
public class SampleConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
private MyLogoutHandler myLogoutHandler;
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.logout()
.logoutUrl("/auth/logout")
.logoutSuccessUrl("/auth/")
.addLogoutHandler(myLogoutHandler)
.invalidateHttpSession(true)
.deleteCookies("JSESSIONID", "SESSION", "remember-me")
.permitAll();
}
}
MyLogoutHandler.java
@Component
public class MyLogoutHandler implements LogoutHandler{
@Override
public void logout(HttpServletRequest request, HttpServletResponse response,
Authentication authentication){
// 何かの処理
// authentication.getName() でログインIDが取れる
}
}
##結果
どうにか出来ないかと思って、LogoutFilterのソース読んでたら、
そもそも複数受け入れるように出来てたってオチ。
LogoutHandlerもInterfaceだったので、意外とサクッと対応できてよかった。