2016-03-29 8 views
0

ich zur Zeit eine "Auto-Login" Mechanismus in JSF bin der Umsetzung,Cookie wird nicht gelöscht, wenn Sie den Browser schließen

Cookie maxAge always -1

sehen habe ich das folgende Szenario getestet:

Ein Benutzer meldet sich ohne "merke mir", schließt dann den Browser direkt ohne Abmelden (wenn man sich abmeldet, wird maxAge von cookie auf 0 gesetzt). Später, wenn der Benutzer die Seite erneut lädt, ist der Cookie im Filter in der Anfrage vorhanden (normal, weil Cookie maxAge beim Schließen des Browsers nicht in 0 geändert wird), und der Benutzer wird automatisch angemeldet, was nicht der Fall ist was ich möchte.

Gibt es eine Möglichkeit, dies zu lösen? Wie ist die Beziehung zwischen Cookie und Sitzung? Ich benutze den Sitzungsumfang. Wie ich weiß, wird die Sitzung nicht zerstört, wenn der Browser geschlossen ist, es liegt an der Entscheidung des Servers. Daher kann ich @ PreDestroy nicht verwenden. Ich kann Jquery.unload auch nicht verwenden, da ein Benutzer nur die Registerkarte und nicht den Browser schließen kann. Auch in meiner Anwendung können mehrere Registerkarten gleichzeitig geöffnet werden ...

Irgendwelche Vorschläge?

Antwort

2

Sie scheinen den Cookie so lange live zu haben wie die geöffnete Browser-Instanz. I.e. Sie möchten, dass das Cookie so lange wie die Browsersitzung bleibt.

Machen Sie es einfach zu einem Session-Cookie, indem Sie ein maximales Alter von -1 angeben. Der Cookie wird dann so lange leben wie die Browser-Instanz.

Bezüglich der Beziehung zwischen HttpSession und Cookies, gehen Sie zu How do servlets work? Instantiation, sessions, shared variables and multithreading. Der Hauptunterschied ist, dass die HttpSession auch eine Server-gesteuerte Timeout hat.

+0

Danke für die schnelle Antwort – qiuzmjq

+0

Danke, BalusC, beide Probleme sind gelöst! – qiuzmjq

+0

Gern geschehen. – BalusC

Verwandte Themen