コントローラーでアクティブ ユーザーの UserDetails を取得するエレガントな方法
Spring アプリケーションでは、ログイン ユーザーの UserDetails を取得するには、次のアクセスを実行します。認証コンテキストとプリンシパルを UserDetails 実装にキャストします。ただし、このアプローチはそれほど便利または直感的ではない可能性があります。
このプロセスを簡素化するには、次の洗練されたソリューションを検討してください:
@AuthenticationPrincipal アノテーションの使用 (Spring Security 3.2 ):
Spring Security 3.2 では @AuthenticationPrincipal アノテーションが導入され、認証されたユーザーの UserDetails をコントローラー メソッドに自動的に挿入できるようになりました。
Controller:
<code class="java">public ModelAndView someRequestHandler(@AuthenticationPrincipal User activeUser) { // Logic utilizing the activeUser object }</code>
Spring 3.1 の HandlerMethodArgumentResolver :
Spring の以前のバージョンまたはカスタム要件の場合、HandlerMethodArgumentResolver の実装は実行可能なオプションです。このリゾルバーはプリンシパルのタイプを決定し、User オブジェクトを抽出します。
引数リゾルバー:
<code class="java">public class CurrentUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { // Implementation to check for eligible method parameters and retrieve the User object }</code>
構成:
<code class="java">@Configuration public class ApplicationConfig { // Bean definition for the CurrentUserHandlerMethodArgumentResolver }</code>
CurrentUserWebArgumentResolver の使用 (レガシー):
Spring 3.1 より前では、CurrentUserWebArgumentResolver を同様の機能に使用できました。
Argument Resolver:
<code class="java">public class CurrentUserWebArgumentResolver implements WebArgumentResolver { // Implementation for method parameter validation and User object retrieval }</code>
構成:
<code class="java">@Configuration public class ApplicationConfig { // Bean definition for the CurrentUserWebArgumentResolver }</code>
選択されるソリューションは、アプリケーションの Spring バージョンと特定の要件によって異なります。ただし、これらのアプローチは、コントローラー内のアクティブ ユーザーの UserDetails にアクセスするためのエレガントで一貫した方法を提供します。
以上がSpringコントローラーでアクティブユーザーのUserDetailsをエレガントに取得する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。