2016-07-10 4 views
2

Ich habe eine einfache Feder Sicherheitsanwendung mit einer Benutzerverwaltung. Ein Administrator sollte Benutzer in der Datenbank erstellen/aktualisieren/löschen können (über Hibernate).Frühling Sicherheit Benutzer löschen - Sitzung noch aktiv

Wenn ein Benutzer aktualisiert wird, ich bin die Authentifizierung des Benutzers neu zu laden, die gerade angemeldet ist, dass mit dem folgenden Code fertig ist (nach this Beispiel):.

SecurityContextHolder.getContext().setAuthentication(updatedAuthentication); 

Meine Frage ist: Was kann ich tun, wenn ein Benutzer gelöscht wird? Wenn ich einen Benutzer lösche, bleiben bereits aktive Sitzungen aktiv und ich weiß nicht, wie man sie aktualisiert. Ich kann immer noch zu jeder Seite navigieren, zu der ich vorher gehen konnte.

Gibt es eine Möglichkeit, dem Frühling zu sagen, dass eine Sitzung revalidiert werden soll oder so? Habe ich etwas Wichtiges vermisst?

Antwort

1

Bei jeder Anfrage sollten Sie Ihre Datenbank auf Benutzer Existenz überprüfen. Schritte:

  1. Nehmen Sie die Benutzer-ID von Sitzung, überprüfen Sie es in der Datenbank ist oder nicht.
  2. Wenn nicht in der Datenbank die Sitzung ungültig machen und erneut zur Anmeldeseite umleiten.
  3. Diese über zwei Stpes in einer Methode umbrechen und bei jeder Anfrage aufrufen. (Wenn die übliche Methode ist, verwenden Sie das oder erstellen Sie einen Listener)

Auch können Sie den folgenden Link überprüfen, wenn es hilft. http://forum.spring.io/forum/spring-projects/security/35809-how-to-let-admin-to-force-user-to-logout

Ein weiterer hilfreicher Link ist http://docs.spring.io/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#list-authenticated-principals

0

SecurityContextRepository

Von Spring Security 3.0, die Aufgabe des Ladens und den Sicherheitskontext zu speichern nun

an eine separate Strategie Schnittstelle übertragen

Sie kann eine NullSecurityContextRepository bereitstellen, um die Speicherung von Sicherheitskontextinformationen zu vermeiden.

Ich habe so etwas wie dies:

@EnableWebSecurity 
public class CustomSecurityConfiguration extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 

     // Other security configuration... 

     http.securityContext().securityContextRepository(new NullSecurityContextRepository()); 
    } 

}