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