Abrufen der Benutzerdetails des aktiven Benutzers
Beim Arbeiten mit Controllern in einer Spring-Anwendung kann das Abrufen der Details des aktiven Benutzers durch Zugriff erreicht werden die UserDetails-Implementierung.
<code class="java">User activeUser = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();</code>
Dieser Ansatz ist zwar funktionsfähig, kann aber mithilfe der Abhängigkeitsinjektion vereinfacht werden.
Verwendung von @AuthenticationPrincipal Annotation
In In Spring Security 3.2 und höher kann die Annotation @AuthenticationPrincipal verwendet werden. Diese elegante Lösung ermöglicht die direkte Injektion des UserDetails-Objekts in den Controller oder die Methode.
<code class="java">public ModelAndView someRequestHandler(@AuthenticationPrincipal User activeUser) { ... }</code>
Verwendung von ArgumentResolvers
Vor Spring Security 3.2 oder wenn eine Anpassung erforderlich ist können Argumentlöser eingesetzt werden. Ein WebArgumentResolver wie CurrentUserWebArgumentResolver kann erstellt werden, um das UserDetails-Objekt automatisch aufzulösen.
<code class="java">public class CurrentUserWebArgumentResolver implements WebArgumentResolver { @Override public Object resolveArgument(...) { if (...) { return (User) ((Authentication) principal).getPrincipal(); } else { return WebArgumentResolver.UNRESOLVED; } } }</code>
Dieser Resolver muss in der Konfiguration der Anwendung registriert werden.
Spring 3.1: HandlerMethodArgumentResolver
In Spring 3.1 wird der HandlerMethodArgumentResolver, wie auch CurrentUserHandlerMethodArgumentResolver, empfohlen. Er bietet eine ähnliche Funktionalität wie der WebArgumentResolver.
<code class="java">public class CurrentUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { @Override public Object resolveArgument(...) { if (...) { return (User) ((Authentication) principal).getPrincipal(); } else { return WebArgumentResolver.UNRESOLVED; } } }</code>
Dieser Resolver muss ebenfalls in der Konfiguration registriert werden.
Durch die Verwendung dieser Methoden können Sie auf elegante Weise die Benutzerdetails des aktiven Benutzers abrufen Ihre Controller und verbessern so die Wartbarkeit und Lesbarkeit des Codes Ihrer Spring-Anwendung.
Das obige ist der detaillierte Inhalt vonWie rufe ich die Benutzerdetails des aktiven Benutzers in einer Spring-Anwendung ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!