SpringコントローラーでアクティブユーザーのUserDetailsをエレガントに取得する方法?

Linda Hamilton
リリース: 2024-11-06 02:52:02
オリジナル
581 人が閲覧しました

How to Retrieve the Active User's UserDetails in Spring Controllers Elegantly?

コントローラーでアクティブ ユーザーの 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 サイトの他の関連記事を参照してください。

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