yuusuke-roughの日記

Java,SpringBoot,趣味等

remember-meやlogoutがうまく動作しなかった in Spring Security

はじめに

 

IT関係のお世話になった方々や同級生らの社会での活躍を目にして、こんな風に生きたかったなと思う休日です。

 

さて、今日はremember-meやlogoutがうまく動作しなかった問題をテーマにします。

 

動作環境

Spring Boot 2.6.3

Java SE11

 

実装しようとしたこと

ログイン状態を保持するためのremember-meの実装を試みました。

Spring Securityを使用して下記サイトを参考にしました。

 

www.baeldung.com

 

.and() .rememberMe().key("uniqueAndSecret")

 

問題点

 

java.lang.IllegalStateException: UserDetailsService is required.

が表示される。

 

UserDetailsServiceはもう実装しているはずだけれど何で?となりました。

というのも、DAOAuthenticationProvider内でUserDetailsServiceはセット済だからです。

しかし、よく調べると

 

spring.pleiades.io

 

UserDetailsService からユーザーの詳細を取得する AuthenticationProvider 実装。

 

とのことで、AutheticationManagerBuilderでUserDetailsServiceに基づいて認証を行うのとでは違うことが分かりました。

 

解決までのプロセス

そこで、AuthenticationManagerBuilderにUserDetailsServiceを追加して動作確認したところうまく動きました。

 

...2重で認証している...と思ったので他の解決策を探し、下記ドキュメントを参考にしました。

 

spring.pleiades.io

 

使用したのはalwaysRememberとuserDetailsServiceです。

 

これで動きました。

 

投げやり(logoutの件)

logoutはpostじゃないと機能しないそうです。