2016-04-26 11 views
1

Ich arbeite an einer Java Spring MVC-Anwendung und ich verwende Java-basierte Konfiguration für Spring Security. Ich muss einige Spring Security-Einstellungen dynamisch ändern (während der Benutzeraktivität). Dies ist ein Teil meines Code:Spring MVC - Sicherheitseinstellungen dynamisch ändern

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

     http 
      .anyRequest().authenticated() 
      .and() 
      .formLogin() 
      .loginPage("/admin/login") 
      ... 

} 

Ich brauche /admin/login URL customer/login zum Beispiel zu ändern, während der Benutzeraktivität.

+1

@AlanHay Ich brauche zu ändern 'expiredUrl' auf bestimmten Bedingungen dynamisch basiert. Mit anderen Worten, in "condition1" möchte ich ** wenn die Sitzung eines Benutzers ausläuft **, ihn zu "/ x1/login" umleiten, und in "condition2" möchte ich ihn zu '/ x2/login' umleiten . Wenn in den aktuellen Einstellungen die Sitzung des Benutzers abbricht, leitet spring ihn zu "/ x1/login" (Standardanmeldeseite) um. Kannst du mir bitte Helfen? – hamed

+0

Die Konfiguration, auf die in Ihrer Frage Bezug genommen wird, ist eher global als pro Benutzer, so dass ich nicht sehen kann, wie sich das ändern wird. –

Antwort

0

Ich würde einfach auf Links in der HTML bieten, einem für Kunden, ein für Administratoren :)

Aber ich denke, man würde nicht gefragt, ob dies eine gültige Lösung für Sie sein würde. Je nachdem, wie viel Spaß Sie ein wenig Abhilfe haben Codierung, könnten Sie für diesen Ansatz gehen:

  • eine anonyme Sitzung erstellen für die Benutzer der Benutzer letzte Aktivität Kategorie zu erinnern. Wenn Spring-Security die Arbeit für Sie nicht (einfach) erledigen kann, speichern Sie die Kategorie activity in einem Cookie. Jetzt können Sie für Lösung (1) oder (2) gehen.

    1. Basierend auf den Informationen, die Sie gespeichert haben, können Sie dynamisch entscheiden, welche Ziel-Login-URL Sie in Ihre HTML-Seiten rendern. Auf diese Weise können Sie die richtige Anmeldeseite dynamisch verknüpfen.
    2. Der Nachteil von Lösung (1) ist, dass Sie die korrekte Ziel-URL in jedem Ihrer Controller basierend auf dem gespeicherten Wert festlegen müssen. Vielleicht wäre es ein besserer Ansatz, wenn Ihr HTML-Code immer auf denselben Login-Dispatcher-Controller verweist und die Anfrage basierend auf der gespeicherten Aktivitätstypen an die richtige Anmeldeseite weiterleitet.