# JSF - Session Handling Firefox



## y0dA (8. August 2007)

Hi!
Nehme an dass jeder der schon mal seine JSF Applikation im Firefox hat laufen lassen dass sich das Session Handling im Firefox anders verhält als im IE.

Mein Problem ist folgendes (Firefox):
User A öffnet Firefox und bekommt Instanz A - danach loggt er sich in meine Applikation ein und arbeitet fröhlich vor sich hin. Danach öffnet User A ein neues Tab des Firefox Browsers und loggt sich mit User B ein. Wenn User A nun mit User B arbeitet stört er somit auch jene Tätigkeiten die er mit User A durchführt.
Das Problem ist dass beim Firefox Browser alle Instanzen diesselbe SessionId besitzen.

Wie geht ihr mit diesem Problem um?
Wie handelt ihr die Security?

Weiters würde mich noch interessieren wie es sein kann dass wenn sich User A ausloggt und sich wieder einloggt (Browser nicht schließt) dass dann bspw. die tree2 Komponenten noch immer im Letztzustand (wie vor dem logout) sind? Wie kann ich beim logout sichergehen dass alles relevante destroyed bzw in initial Zustand gebracht wird?

mfg


----------



## schnuffie (8. August 2007)

Wie wär's denn, den Usernamen mit in die Session zu packen? Somit würde aus User A dann nämlich User B, also genau das, was der User wollte.

Du machst einfach alle Aktionen für den User, der in der Session steht und prüfst somit auch seine Rechte ab, damit erschlägst Du automatisch die Security.

Nebenbei hätte das noch den Effekt, daß Du mit dieser Info manch andere Vorgaben erfüllen kannst - 2 Beispiele:
- neues Login an bestehender Session verboten (Abfrage über username==null)
- mehrfache Sessions mit gleichem User möglich, sonst username in den Context packen


----------



## y0dA (8. August 2007)

Hi!
Jo das mit dem User hatte ich schon vor, jedoch wie sollte ich das ganze realisieren? Sprich einen Filter einbauen welcher bei jedem Request überprüft ob der user eingeloggt ist bzw ob der current user nicht derselbe user in der session ist..

Weiters sollte es eben wie folgt ablaufen:
User A ist eingeloggt.
User B loggt sich ein (mittles FireFox Tab) - somit sollte User A entfernt werden sowie die Session ungültig gemacht werden(damit bei Tab 1 der User nur mehr auf die login Seite gelangt) und in weiterer Folge sollte bei einer neuerlichen Interaktion auf die login seite weitergeleitet werden.

Oder sollte ich einfach prinzipiell wenn mein logincontroller aufgerufen wird, die session invalidate machen und den neuen user einloggen?


----------

