ホームページ  >  記事  >  Java  >  Spring MVC でアクティブなユーザーの詳細に簡単にアクセスするにはどうすればよいですか?

Spring MVC でアクティブなユーザーの詳細に簡単にアクセスするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-04 19:13:01586ブラウズ

How to Easily Access Active User Details in Spring MVC?

Spring MVC でアクティブなユーザーの UserDetails を取得する方法

問題ステートメント

現在ログインしているユーザーの UserDetails にアクセスするにはSpring MVC アプリケーションのコントローラー内に実装する場合、開発者は通常、Principal オブジェクトを取得して目的の型にキャストするソリューションを利用します。このアプローチは機能しますが、コントローラー内に不必要な複雑さと混乱が生じます。

@AuthenticationPrincipal を使用したエレガントなソリューション

幸いなことに、Spring Security は、このシナリオに対してより合理化されたソリューションを提供します。注釈の使用を通じて。 Spring Security 3.2 以降のバージョンの場合、開発者はコントローラー内で @AuthenticationPrincipal アノテーションを使用して UserDetails 実装を取得できます。

@AuthenticationPrincipal を使用した実装

これを利用するには注釈を使用して、コントローラー メソッドを次のように変更できます。

<code class="java">public ModelAndView someRequestHandler(@AuthenticationPrincipal User activeUser) {
    // ...
}</code>

HandlerMethodArgumentResolver を使用した代替ソリューション

Spring 3.1 以前を使用している場合、またはさらに多くの機能が必要な場合柔軟性に優れているため、カスタム WebArgumentResolver または HandlerMethodArgumentResolver を実装して、この機能を実現できます。

WebArgumentResolver アプローチ

WebArgumentResolver の場合、次のインターフェイスを実装するクラスを作成できます。

<code class="java">public class CurrentUserWebArgumentResolver implements WebArgumentResolver{

    // Implement the resolveArgument method as detailed in the answer 
}</code>

HandlerMethodArgumentResolver アプローチ

HandlerMethodArgumentResolver の場合、次のインターフェイスを実装するクラスを作成できます。

<code class="java">public class CurrentUserHandlerMethodArgumentResolver
                               implements HandlerMethodArgumentResolver {

    // Implement the supportsParameter and resolveArgument methods as detailed in the answer
}</code>

カスタム引数リゾルバー

カスタム引数リゾルバーを実装した後、Spring 構成ファイル内でそれを構成する必要があります:

<code class="xml"><bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"
    id="applicationConversionService">
    <property name="customArgumentResolver">
        <bean class="CurrentUserWebArgumentResolver"/>
    </property>
</bean></code>

Spring Security 3.2 以降のソリューション

Spring Security 3.2 以降の場合、@AuthenticationPrincipal アノテーションと AuthenticationPrincipalArgumentResolver という組み込みソリューションが存在します。注釈と引数リゾルバーを構成に追加するだけです:

<code class="xml"><mvc:annotation-driven>
      <mvc:argument-resolvers>
           <bean class="org.springframework.security.web.bind.support.AuthenticationPrincipalArgumentResolver"/>         
      </mvc:argument-resolvers>
 </mvc:annotation-driven></code>

以上がSpring MVC でアクティブなユーザーの詳細に簡単にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。