web-dev-qa-db-fra.com

Tuer la session et rediriger vers la page de connexion en cliquant sur le bouton de déconnexion

J'ai le code suivant dans JSP:

Lorsque l'utilisateur clique sur le bouton de déconnexion, je souhaite le rediriger vers la page de connexion et tuer la session en cours. J'ai réussi la partie de redirection mais je ne sais pas comment tuer la session. Comment cela peut-il être fait s'il vous plaît?

10
Matthew

Afin de tuer la session en cours, vous devez en principe appeler HttpSession#invalidate() et effectuer une redirection vers le login ou la page principale. Ce code est censé être placé dans la méthode doPost() d'un servlet qui est invoqué par une demande POST. 

Par exemple.

<form action="${pageContext.request.contextPath}/logout" method="post">
    <input type="submit" value="Logout" />
</form>

avec

@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getSession().invalidate();
        response.sendRedirect(request.getContextPath() + "/LoginPage.html");
    }

}

Sans lien avec le problème concret, votre code de vérification de nom d'utilisateur n'est pas au bon endroit. Vous ne devriez pas copier le même code sur toutes les pages JSP. Vous devez effectuer ce travail à un seul endroit dans un filtre servlet . Le code Java dans les fichiers JSP doit être évité autant que possible.

En outre, il existe un autre problème potentiel lorsque l'utilisateur final utilise le bouton Précédent du navigateur pour revenir à l'historique. Par défaut, le navigateur met en cache toutes les réponses. Le bouton Précédent peut donc afficher la page à partir du cache du navigateur au lieu de demander une nouvelle page directement au serveur. Pour résoudre ce problème, consultez cette question connexe Empêcher l'utilisateur de voir la page sécurisée précédemment visitée après la déconnexion

Enfin, vous avez là des codes HTML assez étranges. Des boutons avec onClick pour naviguer? Comment utilisateur et référencement peu amical. Utilisez des liens <a> normaux à la place. Pour le bouton look'n'feel, ajoutez un peu de CSS.

20
BalusC

Vous devriez jeter un oeil à la méthode invalidate () de HttpSession. La session peut être récupérée via HttpServletRequest getSession () method.

Vous devez également consulter les en-têtes http Expag, Cache-Control et Pragma, comme dans: Empêcher l'utilisateur de revenir à la page sécurisée précédente après la déconnexion .

2
rvcoutinho

essayez ceci pour tuer la session

HttpSession newsession = request.getSession(false);
    if (newsession != null) 
    {
         newsession.invalidate();

    }

   response.sendRedirect("../index.jsp");
1
Prikshit