Springコントローラーでアクティブなユーザーの詳細を取得するにはどうすればよいですか?

DDD
リリース: 2024-11-05 17:17:02
オリジナル
600 人が閲覧しました

How to Retrieve Active User Details in Spring Controllers?

アクティブ ユーザー UserDetails の取得

Spring コントローラーでアクティブ (ログイン) ユーザーの詳細にアクセスするには、通常、SecurityContextHolder を介して UserDetails 実装を取得する必要があります。 。ただし、Spring は、このプロセスを簡素化するための代替アプローチを提供します。

@AuthenticationPrincipal の使用

Spring Security 3.2 以降、@AuthenticationPrincipal アノテーションは、 UserDetails をコントローラーまたはメソッドに組み込みます。メソッドパラメータに @AuthenticationPrincipal アノテーションを付けることにより、Spring は UserDetails 実装を含む Principal オブジェクトを自動的に挿入します。

例:

<code class="java">public ModelAndView someRequestHandler(@AuthenticationPrincipal User activeUser) { ... }</code>
ログイン後にコピー

カスタム引数リゾルバー (Spring 3.2 より前)

Spring Security の以前のバージョンを使用している場合、またはより詳細な制御が必要な場合は、カスタム WebArgumentResolver または HandlerMethodArgumentResolver を実装して、プリンシパルから User オブジェクトを取得できます。 .

例 (WebArgumentResolver):

<code class="java">public class CurrentUserWebArgumentResolver implements WebArgumentResolver {
    @Override
    public Object resolveArgument(MethodParameter methodParameter, NativeWebRequest webRequest) {
        if (methodParameter.isParameterType(User.class) && methodParameter.hasParameterAnnotation(ActiveUser.class)) {
            Principal principal = webRequest.getUserPrincipal();
            return (User) ((Authentication) principal).getPrincipal();
        } else {
            return WebArgumentResolver.UNRESOLVED;
        }
    }
}</code>
ログイン後にコピー

Spring 3.1 (HandlerMethodArgumentResolver):

<code class="java">public class CurrentUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
    @Override
    public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {
        if (this.supportsParameter(methodParameter)) {
            Principal principal = webRequest.getUserPrincipal();
            return (User) ((Authentication) principal).getPrincipal();
        } else {
            return WebArgumentResolver.UNRESOLVED;
        }
    }
}</code>
ログイン後にコピー

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!