1. ホーム

[解決済み] Spring Securityを使用する場合、Beanで現在のユーザー名(つまりSecurityContext)情報を取得する適切な方法は何ですか?

2022-03-31 19:06:07

質問

私は、Spring Securityを使用するSpring MVCのWebアプリを持っています。 私は、現在ログインしているユーザーのユーザー名を知りたいです。 私は以下のコードスニペットを使用しています。 これは受け入れられた方法ですか?

このコントローラの内部で静的メソッドを呼び出すのは好きではありません - それはSpringの目的全体を台無しにしています。 IMHOでは、それはSpringの目的全体を破壊するものです。代わりに、現在のSecurityContextまたは現在のAuthenticationが注入されるようにアプリを構成する方法はありますか?

  @RequestMapping(method = RequestMethod.GET)
  public ModelAndView showResults(final HttpServletRequest request...) {
    final String currentUser = SecurityContextHolder.getContext().getAuthentication().getName();
    ...
  }

解決方法は?

を使用している場合 スプリング3 のように、最も簡単な方法です。

 @RequestMapping(method = RequestMethod.GET)   
 public ModelAndView showResults(final HttpServletRequest request, Principal principal) {

     final String currentUser = principal.getName();

 }