web-dev-qa-db-fra.com

Comment valider / invalider les sessions jsp / servlets?

J'ai ouvert la session dans ma servlet lorsque l'utilisateur a effectué une connexion réussie:

HttpSession session = request.getSession(true);
session.setAttribute("name", name);

puis j'ai écrit dans logout.jsp pour terminer la session:

<%session.invalidate();%>

Pour vérifier si une session est valide, je fais ceci:

HttpSession session = request.getSession();
String name = (String) session.getAttribute("name");

Mais cela ne fonctionne pas, j'obtiens la session valide même après la session.invalidate. Est-ce que quelqu'un comprend où je fais mal?

12
Noah Martin

vous devez appeler session.getSession (false) - qui renvoie null s'il n'y a pas de session en cours.

selon docs

HttpSession#getSession(boolean create) - create - true pour créer une nouvelle session pour cette requête si nécessaire; false pour retourner null s'il n'y a pas de session en cours.

Ainsi, la manière correcte de vérifier la valeur de la session serait -

HttpSession session = request.getSession(false);
if(session!=null)
  session.setAttribute("name", name);

et une fois que vous invalidez la session -

HttpSession session = request.getSession(false);
if(session!=null)
session.invalidate();
24