Maison > Java > javaDidacticiel > le corps du texte

Comment récupérer les détails utilisateur de l'utilisateur actif dans une application Spring ?

Patricia Arquette
Libérer: 2024-11-05 04:37:02
original
490 Les gens l'ont consulté

How to Retrieve the Active User's UserDetails in a Spring Application?

Récupération des détails de l'utilisateur actif

Lorsque vous travaillez avec des contrôleurs dans une application Spring, la récupération des détails de l'utilisateur actif peut être obtenue en accédant à l'implémentation de UserDetails.

<code class="java">User activeUser = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();</code>
Copier après la connexion

Bien que cette approche soit fonctionnelle, elle peut être simplifiée à l'aide de l'injection de dépendances.

Utilisation de @AuthenticationPrincipal Annotation

Dans Spring Security 3.2 et versions ultérieures, l'annotation @AuthenticationPrincipal peut être utilisée. Cette solution élégante permet l'injection directe de l'objet UserDetails dans le contrôleur ou la méthode.

<code class="java">public ModelAndView someRequestHandler(@AuthenticationPrincipal User activeUser) {
    ...
}</code>
Copier après la connexion

Utilisation d'ArgumentResolvers

Avant Spring Security 3.2, ou si une personnalisation est requise , des résolveurs d'arguments peuvent être utilisés. Un WebArgumentResolver, comme CurrentUserWebArgumentResolver, peut être créé pour résoudre automatiquement l'objet UserDetails.

<code class="java">public class CurrentUserWebArgumentResolver implements WebArgumentResolver {
    @Override
    public Object resolveArgument(...) {
        if (...) {
            return (User) ((Authentication) principal).getPrincipal();
        } else {
            return WebArgumentResolver.UNRESOLVED;
        }
    }
}</code>
Copier après la connexion

Ce résolveur doit être enregistré dans la configuration de l'application.

Spring 3.1 : HandlerMethodArgumentResolver

Au Spring 3.1, le HandlerMethodArgumentResolver, comme CurrentUserHandlerMethodArgumentResolver, est recommandé. Il fournit des fonctionnalités similaires à WebArgumentResolver.

<code class="java">public class CurrentUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
    @Override
    public Object resolveArgument(...) {
        if (...) {
            return (User) ((Authentication) principal).getPrincipal();
        } else {
            return WebArgumentResolver.UNRESOLVED;
        }
    }
}</code>
Copier après la connexion

Ce résolveur doit également être enregistré dans la configuration.

En utilisant ces méthodes, vous pouvez obtenir élégamment les UserDetails de l'utilisateur actif dans vos contrôleurs, améliorant ainsi la maintenabilité et la lisibilité du code de votre application Spring.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!