1. ホーム
  2. java

Spring Bootで現在ログインしているユーザーを調べるには?

2023-09-03 12:22:18

質問内容

このSpring Bootアプリケーションの には、ログインしたユーザーのデータを返すウェブサービスがあります。

@RequestMapping("/resource")
public Map<String, Object> home() {
    Map<String, Object> model = new HashMap<String, Object>();
    model.put("id", UUID.randomUUID().toString());
    model.put("content", "Hello World");
    return model;
}

想像してみてください、このメソッドの戻り値は、現在どのユーザーがログインしているかに依存します。

そのメソッドでどのユーザーがログインしているかを調べるにはどうしたらよいでしょうか。

どのように解決するのですか?

ご要望にお応えして。

を使用するSpring Bootは Spring Securityを内部的に が提供する SecurityContextHolder クラスで、現在認証されているユーザを参照することができます。

Authentication auth = SecurityContextHolder.getContext().getAuthentication();

この 認証 インスタンスが以下のメソッドを提供するようになりました。

  • ログインしているユーザのユーザ名を取得します。 getPrincipal()
  • 認証されたユーザーのパスワードを取得します。 getCredentials()
  • 認証されたユーザーの割り当てられたロールを取得します。 getAuthorities()
  • 認証されたユーザーのさらに詳しい情報を取得します。 getDetails()