Maison  >  Article  >  Java  >  Comment accéder facilement aux détails des utilisateurs actifs dans Spring MVC ?

Comment accéder facilement aux détails des utilisateurs actifs dans Spring MVC ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-04 19:13:01591parcourir

How to Easily Access Active User Details in Spring MVC?

Comment obtenir les détails de l'utilisateur d'un utilisateur actif dans Spring MVC

Énoncé du problème

Pour accéder aux détails de l'utilisateur actuellement connecté implémentation au sein des contrôleurs dans une application Spring MVC, les développeurs ont généralement recours à une solution qui implique de récupérer l'objet Principal et de le convertir dans l'objet souhaité. taper. Bien que cette approche soit fonctionnelle, elle introduit une complexité et un encombrement inutiles au sein des contrôleurs.

Solution élégante avec @AuthenticationPrincipal

Heureusement, Spring Security fournit une solution plus rationalisée pour ce scénario grâce à l'utilisation d'annotations. Pour les versions de Spring Security 3.2 et supérieures, les développeurs peuvent utiliser l'annotation @AuthenticationPrincipal dans leurs contrôleurs pour récupérer l'implémentation de UserDetails.

Implémentation à l'aide de @AuthenticationPrincipal

Pour utiliser cette annotation, vous pouvez modifier votre méthode de contrôleur comme suit :

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

Solution alternative avec HandlerMethodArgumentResolver

Si vous utilisez Spring 3.1 ou une version antérieure, ou si vous avez besoin de plus de flexibilité, vous pouvez implémenter un WebArgumentResolver personnalisé ou HandlerMethodArgumentResolver pour y parvenir fonctionnalité.

Approche WebArgumentResolver

Pour WebArgumentResolver, vous pouvez créer une classe qui implémente l'interface suivante :

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

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

Approche HandlerMethodArgumentResolver

Pour HandlerMethodArgumentResolver, vous pouvez créer une classe qui implémente l'interface suivante :

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

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

Configuration avec un résolveur d'argument personnalisé

Après avoir implémenté votre résolveur d'argument personnalisé, vous devez configurer dans votre fichier de configuration 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 et solution ultérieure

Pour Spring Security 3.2 et versions ultérieures, une solution intégrée existe : l'annotation @AuthenticationPrincipal et AuthenticationPrincipalArgumentResolver. Ajoutez simplement l'annotation et le résolveur d'arguments à votre configuration :

<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>

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!

Déclaration:
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