ユーザ認証: 単純なログイン

ユーザ認証を行ってみましょう(参考: Getting Started · Securing a Web Application)。

spring-boot-starter-security

Springにはセキュリティ関係の機能をサポートするSpring Securityがあり、またSpring Bootで利用する場合はspring-boot-starter-securityを使うことができます。build.gradleのdependenciesに追加します。

ログインフォーム

まずログインフォームを作り、アクセスできるようにしておきます。

テンプレートは、/loginにusernameとpasswordを送るようにします。

コントローラでは/loginにアクセスがあったときに上記のテンプレートが表示されるようにします。Getting Started · Securing a Web Applicationでは、WebMvcConfigurerAdapterを使ってビューを追加していますが、どちらでも構いません。

WebSecurityConfigurerAdapter

WebSecurityConfigurerAdapterを継承した設定用クラスを作り、overrideしたconfigureメソッドで設定を行います。

  • 10行目: 設定用クラスであることを指定する。
  • 11行目: Spring Securityのウェブ用の機能を利用することを指定する。
  • 14〜18行目: configureメソッドをoverrideし、ここで設定を行う。16行目ではトップページ(/)は認証無しでアクセス可、それ以外は認証が必要なことを設定している。複数のページを認証なしでアクセス可とする場合は「antMatchers(“/”, “/sample”)」のように複数指定することができる。17行目ではログインフォームのURLが/loginで、ここへのアクセスも全てのユーザがアクセス可能としている。
  • 20〜27行目: GlobalAuthenticationConfigurerAdapterを継承したクラスのinitメソッドで認証するユーザとパスワードを設定する。

ログインの確認

トップページ(/)以外のページにアクセスすると/loginにリダイレクトされます。

Login

ユーザ名・パスワードがあっていれば、元のURLに移動します。ユーザ名・パスワードが間違っている場合はエラーメッセージが表示されます。

Login error