Heim > Java > javaLernprogramm > Hauptteil

Wie rufe ich aktive Benutzerdetails in Spring Controllern ab?

DDD
Freigeben: 2024-11-05 17:17:02
Original
600 Leute haben es durchsucht

How to Retrieve Active User Details in Spring Controllers?

Erhalten der Benutzerdetails des aktiven Benutzers

In Spring-Controllern umfasst der Zugriff auf die Details des aktiven (angemeldeten) Benutzers normalerweise das Abrufen der UserDetails-Implementierung über den SecurityContextHolder . Spring bietet jedoch einen alternativen Ansatz, um diesen Prozess zu vereinfachen.

Verwendung von @AuthenticationPrincipal

Ab Spring Security 3.2 bietet die Annotation @AuthenticationPrincipal eine bequeme Möglichkeit, das automatisch zu verdrahten UserDetails in Controller oder Methoden umwandeln. Durch Annotieren eines Methodenparameters mit @AuthenticationPrincipal fügt Spring automatisch das Principal-Objekt ein, das die UserDetails-Implementierung enthält.

Beispiel:

<code class="java">public ModelAndView someRequestHandler(@AuthenticationPrincipal User activeUser) { ... }</code>
Nach dem Login kopieren

Definieren eines Benutzerdefinierter Argument-Resolver (vor Spring 3.2)

Wenn Sie eine frühere Version von Spring Security verwenden oder mehr Kontrolle benötigen, können Sie einen benutzerdefinierten WebArgumentResolver oder HandlerMethodArgumentResolver implementieren, um das Benutzerobjekt vom Principal abzurufen .

Beispiel (WebArgumentResolver):

<code class="java">public class CurrentUserWebArgumentResolver implements WebArgumentResolver {
    @Override
    public Object resolveArgument(MethodParameter methodParameter, NativeWebRequest webRequest) {
        if (methodParameter.isParameterType(User.class) && methodParameter.hasParameterAnnotation(ActiveUser.class)) {
            Principal principal = webRequest.getUserPrincipal();
            return (User) ((Authentication) principal).getPrincipal();
        } else {
            return WebArgumentResolver.UNRESOLVED;
        }
    }
}</code>
Nach dem Login kopieren

Spring 3.1 (HandlerMethodArgumentResolver):

<code class="java">public class CurrentUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {
    @Override
    public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) {
        if (this.supportsParameter(methodParameter)) {
            Principal principal = webRequest.getUserPrincipal();
            return (User) ((Authentication) principal).getPrincipal();
        } else {
            return WebArgumentResolver.UNRESOLVED;
        }
    }
}</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie rufe ich aktive Benutzerdetails in Spring Controllern 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
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!