Vous pouvez et ne devez pas désactiver le bouton de retour ou l'historique du navigateur. C'est mauvais pour l'expérience utilisateur. Il existe des hacks JavaScript, mais ils ne sont pas fiables et ne fonctionneront pas non plus lorsque le client a désactivé JS.
Votre problème concret est que la page demandée est chargée depuis le cache du navigateur au lieu d'être directement depuis le serveur. Ceci est essentiellement inoffensif, mais en effet déroutant pour l'utilisateur final, car il / elle pense à tort que cela vient vraiment du serveur.
Il vous suffit d'indiquer au navigateur de ne pas mettre en cache toutes les pages JSP restreintes (et donc pas seulement la page / l'action de déconnexion elle-même!). De cette façon, le navigateur est obligé de demander la page au serveur plutôt qu'à partir du cache et donc toutes les vérifications de connexion sur le serveur seront exécutées. Vous pouvez le faire en utilisant un filtre qui définit les en- têtes de réponse nécessaires dans la doFilter()
méthode:
@WebFilter
public class NoCacheFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
response.setHeader("Pragma", "no-cache"); // HTTP 1.0.
response.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(req, res);
}
// ...
}
Mappez ceci Filter
sur un point url-pattern
d'intérêt, par exemple *.jsp
.
@WebFilter("*.jsp")
Ou si vous souhaitez mettre cette restriction sur les pages sécurisées uniquement, vous devez spécifier un modèle d'URL qui couvre toutes ces pages sécurisées. Par exemple, lorsqu'ils sont tous dans le dossier /app
, vous devez spécifier le modèle d'URL de /app/*
.
@WebFilter("/app/*")
De plus, vous pouvez effectuer ce travail de la même manière Filter
que lorsque vous vérifiez la présence de l'utilisateur connecté.
N'oubliez pas de vider le cache du navigateur avant de tester! ;)
Voir également: