Spring Oauth2 - neu laden Principals

9

Ich habe die OAuth2-Passwort-Bewilligung mit dem Feder-Sicherheitsmodul implementiert. Ich füge eigene Implementierung von UserDetails und UserDetailsService (jdbc) hinzu. Ich injiziere meinen Controller mit:

%Vor%

wo Benutzer meine Implementierung von UserDetails ist. Jetzt möchte ich die Möglichkeit hinzufügen, Benutzerdaten zu ändern, ohne das Token zu aktualisieren.

Ich versuche Principals mit:

zu aktualisieren %Vor%

Aber es funktioniert nicht, wenn ich eine andere Controller-Methode aufruft, gibt es ein altes Benutzerobjekt zurück.

Gibt es eine Möglichkeit, Benutzerdaten ohne Aktualisierungstoken zu ändern? Gibt es eine Lösung, um die Sicherheit im Frühling zu gewährleisten, dass Benutzerdaten immer aus der Datenbank geladen werden (nicht aus dem Cache)?

    
IgorekPotworek 19.11.2015, 12:28
quelle

2 Antworten

2

Ich habe einen Weg gefunden, dies zu erreichen von diese Antwort . Ich habe HttpSessionSecurityContextRepository

erstellt %Vor%

und füge das zu meinem HttpSecurity aus der Klasse von WebSecurityConfigurerAdapter as

hinzu %Vor%

Nachfolgend finden Sie Beispielcodes, um aktualisierte Benutzerinformationen bei jeder Anfrage abzurufen. Sie können von Ihrem API-Server oder user-info-url Ihrer oauth2-Konfiguration abrufen.

%Vor%     
Cataclysm 20.12.2017 16:12
quelle
1

Ich bin mir nicht sicher, aber das ist nur eine Vermutung, ich denke du musst auch SecurityContext löschen.

Löschen Sie zuerst den Sicherheitskontext mit SecurityContextHolder.clearContext(); und dann Ihren Code, um die Authentifizierung festzulegen

%Vor%     
Hiren 21.12.2017 07:44
quelle