Ich verwende JSF 1.2 mit Richfaces und Facelets.Wie Sie eine Benutzersitzung ungültig machen, wenn er sich zweimal mit denselben Anmeldeinformationen anmeldet
Ich habe eine Anwendung mit vielen Session-Bereich-Beans und einigen Anwendungs-Beans.
Der Benutzer meldet sich an, sagen wir, Firefox. Eine Sitzung wird mit ID = "A" erstellt; Dann öffnet er Chrome und meldet sich erneut mit den gleichen Anmeldeinformationen an. Eine Sitzung wird mit ID = "B" erstellt.
Wenn die Sitzung "B" erstellt wird, möchte ich Sitzung "A" zerstören können. Wie geht das?
Auch. Wenn der Benutzer in Firefox etwas tut, möchte ich in der Lage sein, ein Popup oder eine Art Benachrichtigung anzuzeigen, die sagt "Du wurdest ausgeloggt, weil du dich von woanders eingeloggt hast".
Ich habe einen SessionListener, der die erstellten und zerstörten Sitzungen verfolgt. Die Sache ist, ich könnte das HTTPSession-Objekt in einer Application-Scoped-Bean speichern und es zerstören, wenn ich feststelle, dass der Benutzer sich zweimal angemeldet hat. Aber etwas sagt mir, das ist einfach falsch und wird nicht funktionieren.
Verfolgt JSF die Sitzungen irgendwo auf der Serverseite? Wie man auf sie durch Bezeichner zugreift? Wenn nicht, wie kann man das erste Einloggen eines Benutzers bei zweimaliger Anmeldung abbrechen?
Danke für die Antwort. Ich denke, dass "sessionMap.put (" Benutzer ", Benutzer);" sollte "sessionMap.put (Benutzername, Benutzer);" sein. Andernfalls, wenn sich ein anderer Benutzer mit anderen Anmeldeinformationen anmeldet, würden wir den ersten Benutzer rausschmeißen. – pakore
Das ist nicht normal. Sie möchten während einer Clientsitzung keine anderen angemeldeten Benutzer haben. Verwechseln Sie auch nicht die Sitzungszuordnung mit der Anwendungszuordnung. – BalusC
Ok ich verstehe jetzt, dass sessionMap ist ExternalContext.sessionMap .Es funktioniert :). – pakore