2017-03-05 2 views
0

Ich benutze angularjs mit Feder mvc in meiner Anwendung. Es ist eine einzelne Seite Anwendung, wo es eine Login-Schaltfläche und mehrere Registerkarten gibt. Die Registerkarten sind nur sichtbar, wenn sich der Benutzer anmeldet. Nachdem sich der Benutzer angemeldet hat, sind die Registerkarten sichtbar (die Anmeldeschaltfläche ist nicht sichtbar) und der Benutzer kann auf allen Registerkarten navigieren und Funktionen verwenden. Die URL all dieser Aktionen ist dieselbe (Beispiel: www.xyz.com/context/).Spring MVC AngularJS Seite aktualisieren/Redirect

Ich habe Probleme mit der Sitzungsverwaltung hier. Wenn die Sitzung abläuft, während sich der Benutzer auf einer dieser Registerkarten befindet, sagen Sie Tab-Nr. 3 sollte die Seite auf den Anfangszustand zurückgesetzt werden, in dem der Login-Button sichtbar ist und die Tabs nicht.

Ich habe konfiguriert Frühjahr Session-Management wie unten

<security:session-management invalid-session-url="/invalidSession"> 
    <security:concurrency-control expired-url="/" /> 
</security:session-management> 

Auf Sitzung Ablauf, ich habe Spring MVC-Controller, es zu handhaben konfiguriert. Wie der folgende.

@RequestMapping(value="/invalidSession", method = RequestMethod.GET) 
public ModelAndView invalidSession() { 
    ModelAndView model = new ModelAndView("redirect:/"); 
    model.setStatus(HttpStatus.); 
    return model; 
} 

Obwohl diese Methode auf Sitzung Ablauf aufgerufen wird, wird die Umleitung nicht meine Seite in den Ausgangszustand zurückgesetzt, wo nur Login-Button sichtbar ist. Stattdessen bleibt es in Tab Nr. 3 und alle anderen Registerkarten noch sichtbar. Wenn ich den Browser-Refresh-Button drücke, funktioniert es gut.

Ich habe auch versucht, in der obigen Controller-Methode, es funktioniert immer noch nicht.

Ich ging durch die Frage in Spring security and angular javascript redirect to login page, aber es ist etwas kompliziert für meine Anforderung und meine Anforderung ist ziemlich einfach. Ich denke, wir sollten in der Lage sein, es durch Sitzungsverwaltung von Frühling mit entsprechender Umleitung zu handhaben, wo es meine Seite zurücksetzt.

Wie kann ich das erreichen?

+0

Was passiert, wenn die Sitzung abläuft Bleiben sie auf der gleichen Seite? oder auf tab3? Könnten Sie bitte Ihren HTML-Code teilen? –

+0

Es bleibt in Tab 3. Ich habe eine alternative Lösung gefunden, die meiner Anforderung entspricht. Ich habe unten gepostet. – Maz

Antwort

0

Ok. Ich habe einen eckigen Ansatz gewählt. Ich habe die Komponente ng-idle wie in Angular session timeout and management beschrieben verwendet.

Auch habe ich Spring-Session-Management-Tag entfernt wie ng-Idle löst meine Anforderung.