Je suis en train d'ajouter me souviens fonctionnalité à mon application, mais pour une raison quelconque le HttpServletRequest.login() jette un ServletException
:Se souvenir de moi connexion automatique avec JSF + JAAS
javax.servlet.ServletException: Login failed
at com.cleanup.filter.AutoLoginFilter.doFilter(AutoLoginFilter.java:71)
Ligne 71:
req.login(adminUser.getEmail(), adminUser.getPwd());
Je sais que, selon les docs:
Lance: ServletException - si le mécanisme de connexion configuré ne prend pas en charge l'authentification par mot de passe du nom d'utilisateur, ou si une identité d'appelant non nulle a déjà été établie (avant l'appel), ou si la validation du nom d'utilisateur et le mot de passe échoue
Ce qui, à son tour signifierait que les informations d'identification sont « invalides », qui est pas vrai, puisque le journal dans le mécanisme fonctionne très bien.
Mais pourquoi lancer cette exception alors?
Ma théorie est que c'est dû au fait que le password
est crypté, mais si tel est le cas, ne devrait pas request.login(..,..)
fonctionne également avec le mot de passe déjà haché?
Voici mon filtre:
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
String remoteUser = (String) req.getRemoteUser();
if (remoteUser == null) {
String uuid = CookieRememberUtil.getCookieValue(req);
System.out.println("Found cookie" + uuid);
if (uuid != null) {
AdminUsers adminUser = cookiesFacade.getAdminUserFromUUID(uuid);
if (adminUser != null) {
req.login(adminUser.getEmail(), adminUser.getPwd());
CookieRememberUtil.addCookie(resp, uuid);
} else {
CookieRememberUtil.removeCookie(resp);
}
}
}
chain.doFilter(request, response);
}
Je ne suis pas certaine de vous avoir compris. – shep