2013-02-26 2 views
1

Я использую метод HttpServletRequest.login(), предоставляемый сервлет 3.0 в Java EE-контейнере (jdbc-realm), и все работает нормально.«Запомнить меня» и Servlet 3.0 request.login()

В соответствии с этим [Java EE 6: Как реализовать " Оставайтесь зарегистрированным ", когда пользователь входил в веб-приложение, я внедрил метод mem-me-method.

Однако я застрял следующее в фильтре-классе:

if (user != null) { 
request.login(user.getUsername(), user.getPassword()); 
request.getSession().setAttribute("user", user); // Login. 
addCookie(response, COOKIE_NAME, uuid, COOKIE_AGE); // Extends age. 
}. 

У меня есть JDBC-область с зашифровано PW, как я могу сделать управляемый контейнер аутентификации через RememberMe? user.getPassword() нуждается в ясном (unhashed) pw, который я не могу знать! Я не хочу хранить чистые пароли в db.

ответ

1

Если модуль входа в систему, который вы используете, принимает только четкий (unhashed) пароль, то вам, вероятно, потребуется его изменить, а затем установить эту модифицированную версию.

В вашей существующей области JDBC, скорее всего, есть специальный модуль входа в систему, но Java EE 6 имеет стандартизованный выделенный API для создания модулей входа (auth modules), который называется JASPIC. См. this article для фона.

Кстати, для подпроекта OmniFaces под названием OmniSecurity мы прототипировали модуль авторизации JASPIC, который также поддерживает меня. Это открытый источник, поэтому вы можете использовать его для вдохновения.

Смежные вопросы