2012-11-14 3 views
1

Lorsque l'utilisateur se déconnecte (ou se connecte, d'ailleurs), je souhaite m'assurer que la valeur du cookie de session des utilisateurs est modifiée. Comment puis je faire ça? Si je fais juste session.invalidate() tomcat ne retourne pas un en-tête de cookie de session puisqu'il n'y a pas de session active, et donc le cookie reste le même. Si je fais session.invalidate(); request.getSession() pour créer une nouvelle session, la nouvelle session obtient le même sessionId, et ainsi le cookie reste également le même.Comment changer le cookie de session dans Tomcat?

(je voudrais changer la valeur de cookie de session puisque nous avons plusieurs WAR qui partagent un sessionId, et je ne peux pas annuler facilement les sessions dans les autres WARs aussi bien.)

Répondre

1

Il semble que vous devez supprimer le cookie manuellement par adding an expired version of the cookie à la réponse. C'est-à-dire, vous trouvez le cookie dans request.getCookies(), définissez son maxAge à 0 et faites response.addCookie(..). Vous devez également invalider la session et prendre soin de ne pas recréer une session sur cette requête. Cela signifie que vous ne pouvez pas afficher directement une page "Vous êtes déconnecté" mais que vous devez effectuer une redirection côté client vers une page de ce type, à laquelle un nouveau cookie de session sera affecté.