J'ai une application web simple déployée dans Apache Tomcat qui a une page de connexion, un formulaire de téléchargement et un bouton de déconnexion. Lorsque le formulaire de connexion est soumis, je vérifie les informations d'identification et je les redirige vers la page de téléchargement si la connexion est réussie. Si ce n'est pas le cas, je redirige la demande vers la page de connexion elle-même.La connexion échoue dans Webapp déployé dans Apache Tomcat
I ont également un filtre (javax.servlet.Filter) que authentifiée si chaque demande émane d'un utilisateur connecté.
Tout fonctionnait bien hier, mais aujourd'hui, même avec un nom d'utilisateur/mot de passe valide, je suis redirigé vers la page de connexion. Cela se produit uniquement dans Chrome.
Si j'utilise Firefox ou ouvrir une fenêtre de navigation privée dans chrome le flux fonctionne parfaitement bien.
Lorsque j'ai débogué, je vois que request.session renvoie null lorsqu'une redirection est effectuée lors d'une connexion réussie.
Mon LoginServlet:
if (success) {
........
...........
HttpSession session = request.getSession(true);
session.setAttribute(WebAppConstants.OAUTH_TOKEN_SESSION_ATTRIB, accessToken);
session.setAttribute(WebAppConstants.USER_SESSION_ATTRIB, username);
session.setAttribute(WebAppConstants.IS_LOGGED_IN_SESSION_ATTRIB, true);
session.setMaxInactiveInterval(30 * 60);
Cookie usernameCookie = new Cookie(WebAppConstants.USER_SESSION_ATTRIB, username);
usernameCookie.setMaxAge(30 * 60);
response.addCookie(usernameCookie);
response.sendRedirect(WebAppConstants.UPLOADER_JSP);
} else {
response.sendRedirect(WebAppConstants.INVALID_LOGIN_JSP);
}
Mon LoginCheckFilter:
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpSession session = request.getSession(false);
String loginURI = request.getContextPath() + "/login.html";
String uri = request.getRequestURI();
this.context.log("Requested Resource::" + uri);
if (session == null && !(uri.endsWith("html") || uri.endsWith("login"))) {
this.context.log("Unauthorized access request");
response.sendRedirect(loginURI);
} else {
filterChain.doFilter(request, response); // Logged-in user found, so just continue request.
}
}
Pourquoi est-ce qui se passe avec le Chrome navigateur ?? Ai-je manipulé les choses correctement?
Merci Vous
essayez d'effacer l'historique du navigateur, il m'a aidé une fois. –
J'ai essayé de supprimer les cookies sur Chrome et cela fonctionne très bien. Cependant, je me demande quelle était la cause profonde et qu'est-ce qui s'est réellement passé ?? – Shabirmean
Ce qui se passe est que parfois le navigateur peut stocker des données de requête précédentes, donc lorsque vous avez entré des informations d'identification incorrectes, il a stocké cette requête.Donc, à partir du prochain, à chaque fois que vous avez entré une information correcte, la demande précédente avec une mauvaise info a été envoyée. Ayant dit cela, je suis toujours en train d'apprendre sur jsp/servlet, donc je ne suis pas correct à 100%. –