Я пытаюсь добавить запомнить функциональность моего приложения, но по какой-то причине HttpServletRequest.login() бросает ServletException
:Запомнить меня авто вход с JSF + JAAS
javax.servlet.ServletException: Login failed
at com.cleanup.filter.AutoLoginFilter.doFilter(AutoLoginFilter.java:71)
Линия 71:
req.login(adminUser.getEmail(), adminUser.getPwd());
Я знаю, что согласно документации:
Throws: ServletException - если настроенный механизм входа не поддерживает аутентификацию имени пользователя или если недействительный идентификатор вызывающего абонента уже установлен (до вызова для входа в систему) или , если проверка предоставленного имени пользователя и сбой пароля.
Что в свою очередь означает, что учетные данные «недействителен», который не верно, так как бревно в механизм работает нормально.
Но почему это должно было исключить это исключение?
Моя теория заключается в том, что она связана с тем, что password
зашифрован, но если это так, не должно request.login(..,..)
также работать с уже хэшированным паролем?
Вот мой фильтр:
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);
}
Не уверен, что я вас понимаю. – shep