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

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

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

このコントローラー内で静的メソッドを呼び出すのは好きではありません。これは、Spring の目的に反すると思います。代わりに、現在の SecurityContext または現在の Authentication を注入するようにアプリを構成する方法はありますか?

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

ベストアンサー1

使用している場合春3最も簡単な方法は次のとおりです。

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

     final String currentUser = principal.getName();

 }

おすすめ記事