menu
書いてる野郎
orebike@gmail.com
Spring Boot ではこういうアクセス制限をかける処理を Spring Security というモノでやるらしい。
しかしながら、この Spring Security は非常に重厚にできていて、理解して実用レベルのカスタマイズを行うのがかなり骨が折れる。単に実用レベルの認証がしたいだけなら自力で実装したほうが楽。
調べると、やらた XML を書きまくるソースが出てくるがアレは古いやり方で、 2018-11 現在では Java Configurations という仕組みで設定はほぼ全部 Java コードで書ける。 このほうが IDE のチェックが利くのでよろしい。
このフレームワークはやたら歴史が古くて記述がピンキリである。
以下のドキュメントは全部失敗ドキュメント。これでは実用レベルなモノを作れない。
build.gradle に書く
dependencies { implementation('org.springframework.boot:spring-boot-starter-security') }
こいつを設定すると、デフォルトの設定で勝手にログイン画面とか作ってくれたりいろいろおせっかいをたくさんやるのでびっくりしないように。
ログアウト状態で login 画面にアクセスした場合、もうすでに JSESSIONID という値が cookie にセットされている。
ログイン画面から認証成功して成功後の画面に遷移した場合はちゃんと JSESSIONID が貼り変わっているのが確認できる。
どの URL でログイン処理をうけつけるかというやつである。
authFilter.setRequiresAuthenticationRequestMatcher(createLoginProcessingUrlMatcher(loginProcessingUrl));
このようにフィルタにセットしている。
どの URL でログインのためのフォームを表示するのかである。 こいつは各種セッティングを調整するようなメソッドで特にマニュアル設定の場合は意味があまりなさそう
このようになっていてマニュアル設定とほぼ同じである。
authFilter.setAuthenticationFailureHandler(failureHandler);
このハンドラは SavedRequestAwareAuthenticationSuccessHandler というモノが使われている
最終的にはこうなっていたのでマニュアルと同じである
authFilter.setAuthenticationSuccessHandler(successHandler);