Je suis à la recherche du même problème.
Comme je pense que c'est généralement une mauvaise idée de laisser le navigateur restaurer une ancienne session. Cependant, j'ai essayé plusieurs choses, par exemple la configuration des en-têtes de contrôle de cache, mais cela ne fonctionnera pas pour moi. Donc, je pensais vraiment à corriger cela dans un script.
Cependant, je vois des problèmes différents avec des solutions différentes.
1) Supprimer le cookie sur le navigateur à proximité -> Problème: vous devriez le faire avec javascript ajouter la vulnérabilité depuis le http_only doit être défini sur false
2) Réglage cookie_lifetime de 0 (lorsque le navigateur se ferme) à par exemple 3600 (1 heure). -> Problème: si ce paramètre est défini et que la sécurité est perdue et que le paramètre est trop faible, les utilisateurs reçoivent un message d'erreur «Session expirée», ce qui signifie qu'ils doivent se reconnecter.
3) Ajout d'un second cookie avec une date d'expiration. Si le cookie est là, tout est OK. -> issue: est (presque) le même que 2) cela ne fonctionnerait que si vous pouviez modifier la date d'expiration après le réglage du cookie. Dans ce cas l'utilisateur doit rester actif pendant au moins XX minutes sinon il perdra sa session (me semble correct).
Je me pencherai moi-même sur le dernier.
Donc, dans ce cas, je suis en utilisant PHP (pas Java) mais je pense que l'idée générale est la même:
//create expiration cookie
private function setExpireCookie(){
//expire cookie: name, value, expiration in seconds, path, domain, https, http-only
setcookie("Test_Expire", "Expire", time()+3600, "/test", null, false, true);
}
//check if expiration cookie exits
private function expireExists() {
return isset($_COOKIE['Test_Expire']);
}
//set the session check for expiration cookie
private function getSession() {
//does the session cookie exists and the expiration cookie doesnt?
if (!$this->expireExists() && isset($_COOKIE['Test_Cookie'])) {
//to remove the cookie by setting the expiration time before now
setcookie("Test_Cookie", $_COOKIE['Test_Cookie'], time()-3600, "/test");
}
//now we can set the new expiration cookies en start the new session
$this->setExpireCookie();
//set cookie params: lifetime, path, domain, https, http-only
session_set_cookie_params(0, "/api", null, false, true);
session_name('Test_Cookie');
//start session
session_start();
}
Cela fonctionne avant moi. Donc, j'espère que vous pouvez appliquer cela en Java
merci, mais même après avoir ajouté au-dessus des en-têtes le firefox est capable de restaurer la session après un plantage. – SunilGiri