こんにちは。 エキサイト株式会社の三浦です。
Spring Securityを使えば、Spring Bootで簡単にログイン機構を作ることができます。
当然ログイン中のユーザ情報も取得することができます。
Controllerのメソッドの引数から取得する方法が一般的な方法の1つかと思うのですが、実はもっと簡単な方法があります。
import org.springframework.security.core.context.SecurityContextHolder; public class Sample { public User getLoggedInUser() { // これだけでユーザ名を取得可能! final String name = SecurityContextHolder.getContext().getAuthentication().getName(); // DB等からユーザ情報を取得する処理 return getUser(name); } }
上記のように
SecurityContextHolder.getContext().getAuthentication().getName();
を使えば、簡単に現在ログイン中のユーザ名を取得することができます。
(なお、本処理はWebMVCで実行しています。WebFluxの場合は処理が違うようなのでご注意ください。)
Controllerの引数から取得すると、他のクラスやメソッドに引き回す手間が掛かってしまいますが、この方法であればどの場所からもログインユーザ情報を取得できるのでとても便利です。
Spring Securityには色々便利な機能が存在するので、ぜひ使っていきましょう!