Heim > Java > javaLernprogramm > Hauptteil

Wie kann ich die Benutzerdetails des aktiven Benutzers in Spring Controllern elegant abrufen?

Linda Hamilton
Freigeben: 2024-11-06 02:52:02
Original
581 Leute haben es durchsucht

How to Retrieve the Active User's UserDetails in Spring Controllers Elegantly?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Konfiguration:

<code class="java">@Configuration
public class ApplicationConfig {
    // Bean definition for the CurrentUserHandlerMethodArgumentResolver
}</code>
Nach dem Login kopieren

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>
Nach dem Login kopieren

Konfiguration:

<code class="java">@Configuration
public class ApplicationConfig {
    // Bean definition for the CurrentUserWebArgumentResolver
}</code>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!