2012-04-03 3 views
2

Wie eine Sitzung ungültig werden, wenn ich auf neue Registerkarte für die gleiche Anwendung (für die gleiche URL) klicken? Sobald ich auf dieselbe URL zugreife, hat sich die bestehende Sitzung geöffnet. Ich möchte verschiedene Sitzung starten fürInvalidieren Sie die Java-Sitzung für neue Registerkarte

+0

Invalidate nur für die neue Registerkarte ?. Was passiert, wenn ich zu meinem vorherigen geöffneten Tab zurückkehre? Sollte die Sitzung bestehen? –

Antwort

-1

Session ID wird in einem Cookie gespeichert, so dass Sie nicht zwei verschiedene Sitzungen für die gleiche Anwendung in einem Browser (eine neue Registerkarte oder ein neues Fenster - spielt keine Rolle) zur gleichen Zeit .

0

Wenn Sie einfache Servlet verwenden Sie folgenden Code verwenden können,

// Get the existing session. 
HttpSession session = request.getSession(false); 

    // Invalidate the existing session. 
if(session!=null) { 
    session.invalidate(); 
} 

Sie können diese Servlet aufrufen, indem Sie Zuordnung für die neue Registerkarte URL in web.xml zu tun.

-1

Ihre Serversitzung wird mit der HTTP-Sitzung zugeordnet. Sie können nicht zwei HTTP-Sitzungen gleichzeitig im selben Browser haben ... Und wie würden Sie feststellen, dass die Schaltfläche In neuem Tab öffnen gedrückt hat und er den Link nicht in derselben Registerkarte geöffnet hat? Sie sollten einen AJAX-Ping dafür haben (ziemlich knifflig ...)

2

Wenn es um die Session/Cookie geht, unterstützen Browser derzeit keine separaten Cookies für jede unterschiedliche Registerkarte/Fenster.

Aber einige Frameworks haben dieses Konzept von Window, so dass Sie benachrichtigt werden können, wenn ein neues Fenster/Tab geöffnet wird. Sobald Sie es erkennen können, können Sie die alten Fenster zerstören. Das Aktualisieren der Sitzung (oder das Ungültigmachen und Erstellen einer neuen Sitzung) wird auf der anderen Registerkarte nicht den gewünschten Effekt haben (auch wenn Sie dies tun können), da sich diese ganze Sache wiederholen kann, wenn der Benutzer auf die andere alte Registerkarte wechselt.

Ihre beste Wette ist es, mehrere Fenster für den Benutzer in einer einzigen Sitzung zu halten.

0

Verwenden Sie URL-Umschreiben für verschiedene Sitzungen in verschiedenen Registerkarten/Fenstern. Wenn Sie die Sitzung ungültig machen möchten, entfernen Sie einfach alle vorherigen Sitzungen für diesen Benutzer. Das einzige Problem wäre, wenn jemand die URL kopiert und eingefügt hätte. Wenn dies ein Problem sein könnte, dann prüfen Sie, ob der Sitzungsschlüssel irgendwie im HTML5-Speicher gespeichert ist.

Verwandte Themen