ユーザ認証: ログインしたユーザの情報をコントローラで取得する

ログインしたユーザの情報をコントロールで取得してみましょう。

ユーザ名はServletのリクエスト情報を表すHttpServletRequestクラスのオブジェクトのgetRemoteUserメソッドで取得できます。このユーザ名からUserクラスのオブジェクトを取得します。

コントローラは次のようになります。

  • 1行目: 引数にHttpServletRequestを指定することによってそのオブジェクトが取得できる。
  • 2行目: getRemoteUserメソッドでユーザ名を取得する。
  • 3行目: getOneメソッドは、JpaRepositoryに最初から用意されているメソッドで、IDからインスタンスを取得することができる。
  • 4行目: addAttributeメソッドで、userをビューに送る。String以外のオブジェクトでもビューに送ることができる。

ビューは次のようにします。

  • 12,14行目: コントローラーからビューに送られてきたオブジェクトはgetterが設定されていればフィールドを取得することができます。usernameとpasswordはLombokによってgetUsername、getPasswordというgetterが生成されているため、${user.username}、${user.password}で値を取り出すことができます。

http://localhost:8080/userにアクセスすると(ログインしていない場合はログイン画面になり、ログインすると)ユーザ情報が表示されます。

User