Heim > Java > javaLernprogramm > Hauptteil

Wie rufe ich die Benutzerdetails des aktiven Benutzers in einer Spring-Anwendung ab?

Patricia Arquette
Freigeben: 2024-11-05 04:37:02
Original
491 Leute haben es durchsucht

How to Retrieve the Active User's UserDetails in a Spring Application?

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

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

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

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

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!

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!