Verwalten von Webapp-Sitzungsdaten / Controller-Datenfluss für mehrere Registerkarten

Ich habe ein Java-web-Anwendung, die speichert einige Daten in der session. Die Daten in der session ändert, wenn der Benutzer mit der Anwendung interagiert (z.B. Strömung ist, geleitet von einem controller, jeder controller hat mehrere Formular-Seiten, auf jeder Formular-Seite, einige Daten werden in der session und der Fluss geht zum nächsten Formular-Seite).

Das problem ist, dass einige Benutzer zu öffnen, die mehr als eine Registerkarte, um die Anwendung, die Sie jede Registerkarte mit einem anderen Schritt in der Strömung. An dieser Stelle Daten in die session versaut ist, da die tabs teilen sich die gleiche Sitzung (ca verwendet Cookies verwaltet Sitzungen).

Sagen die Nutzer, mit unterschiedlichen Browsern zu vermeiden, teilen die gleiche session-id (z.B. ein Firefox-Fenster und ein IE-Fenster) ist keine option, da sicherlich irgendwann jemand vergessen, dies zu tun und verwenden Sie stattdessen Tabulatoren, damit vermasselt Ihre Daten.

Indem einige überprüfungen, die erkennen, dass eine andere Strömung verlangt wird eine andere Registerkarte, und zeigen Sie eine Nachricht an den Benutzer sagen, dass das nicht erlaubt ist, ist keine option, da kotzt es der Benutzer, und das wollen wir nicht tun wir? 😀

Tatsache ist, dass mit einem anderen tab ist nützlich für die Benutzer, da Sie effizienter sind, was Sie in der Anwendung verwenden, für die, so führe ich diese option. Aber die Frage ist jetzt , wie man am besten verwalten die eine session-Daten mehr für die tabs?

Was ich dachte, war der controller generiert einen token, wenn es beginnt, den Fluss und übergeben Sie dieses token, um jede Formular-Seite, die wiederum sendet es zurück, sich selbst zu identifizieren. Wenn eine andere Registerkarte Anforderungen die gleichen controller-Aktion, wenn es einen ständigen Strom dann zu erzeugen, ein anderes token, und übergeben Sie herum.

Im Grunde möchte ich jeden flow ein token und die in der Sitzung werde ich nicht nur zu halten, einen Satz von Daten, aber Sie haben eine Reihe von Daten, die für jedes token und dann-match-Anfragen basierend auf dem token.

Nun das problem ist, dass dieser Ansatz eine Menge von Umschreibungen, um die Anwendung, und ich Frage mich, ob es eine best practice für die Verwaltung eine solche situation oder kann jemand empfehlen, andere Ansätze. Ich bin offen für Ideen.

Sind Sie auf diese situation? Wie sind Sie damit umgegangen?

Kommentar zu dem Problem - Öffnen
Es gibt keinen Unterschied zwischen der Verwendung von separaten Registerkarten und separaten Fenstern. Session-scope ist browser-Breite, denn es ist implementiert mit Hilfe von cookies (meistens). Welche Technologie verwenden Sie? JSP+servlets? JSF? Kommentarautor: Matt Ball
@Matt Ball: ich bin mit Servlets+JSPs. Ich aktualisiert meine Frage. Ich kenne Sitzung erstreckt sich über die gesamte browser, das ist, warum ich erwähnte die zwei windows, eins zu sein IE die anderen Firefox. Kommentarautor: Gabriela
Ok, es war die Formulierung "verwenden Sie unterschiedliche windows statt einen tab zu vermeiden, teilen die gleiche session-id", wenn Sie wirklich bedeuten "verwenden Sie verschiedene Browser." Kommentarautor: Matt Ball

InformationsquelleAutor der Frage Gabriela | 2010-12-18

Schreibe einen Kommentar