Heim >Java >javaLernprogramm >Wie kann ich die Benutzerdetails des aktiven Benutzers in Spring Controllern elegant abrufen?
Elegante Möglichkeit, die Benutzerdetails des aktiven Benutzers in Controllern abzurufen
In Spring-Anwendungen können die Benutzerdetails des angemeldeten Benutzers durch Zugriff abgerufen werden den Authentifizierungskontext und das Umwandeln des Prinzipals in die UserDetails-Implementierung. Dieser Ansatz ist jedoch möglicherweise nicht so bequem oder intuitiv.
Um diesen Prozess zu vereinfachen, ziehen Sie die folgenden eleganten Lösungen in Betracht:
Verwendung der @AuthenticationPrincipal-Annotation (Spring Security 3.2):
Spring Security 3.2 führte die Annotation @AuthenticationPrincipal ein, die die automatische Injektion der UserDetails des authentifizierten Benutzers in Controller-Methoden ermöglicht.
Controller:
<code class="java">public ModelAndView someRequestHandler(@AuthenticationPrincipal User activeUser) { // Logic utilizing the activeUser object }</code>
HandlerMethodArgumentResolver für Spring 3.1:
Für frühere Versionen von Spring oder benutzerdefinierte Anforderungen ist die Implementierung eines HandlerMethodArgumentResolver eine praktikable Option. Dieser Resolver bestimmt den Typ des Prinzipals und extrahiert das Benutzerobjekt.
Argument Resolver:
<code class="java">public class CurrentUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver { // Implementation to check for eligible method parameters and retrieve the User object }</code>
Konfiguration:
<code class="java">@Configuration public class ApplicationConfig { // Bean definition for the CurrentUserHandlerMethodArgumentResolver }</code>
Verwendung des CurrentUserWebArgumentResolver (Legacy):
Vor Spring 3.1 konnte der CurrentUserWebArgumentResolver für ähnliche Funktionen verwendet werden.
Argument Resolver:
<code class="java">public class CurrentUserWebArgumentResolver implements WebArgumentResolver { // Implementation for method parameter validation and User object retrieval }</code>
Konfiguration:
<code class="java">@Configuration public class ApplicationConfig { // Bean definition for the CurrentUserWebArgumentResolver }</code>
Die gewählte Lösung hängt von der Spring-Version der Anwendung und den spezifischen Anforderungen ab. Diese Ansätze bieten jedoch eine elegante und konsistente Möglichkeit, auf die UserDetails des aktiven Benutzers in Controllern zuzugreifen.
Das obige ist der detaillierte Inhalt vonWie kann ich die Benutzerdetails des aktiven Benutzers in Spring Controllern elegant abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!