1

我在 Java EE 容器(jdbc-realm)中使用 servlet 3.0 提供的 HttpServletRequest.login() 方法,一切正常。

根据这个 [Java EE 6: How to implement "Stay Logged In" when user login to the web application,我实现了一个记住我的方法。

但是我在过滤器类中坚持以下内容:

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

我有一个带有加密 pw 的 jdbc-realm,如何通过 rememberMe 进行容器管理身份验证?user.getPassword() 需要我不知道的清晰(未散列)密码!我不想在数据库中存储明确的密码。

4

1 回答 1

1

如果您使用的现成登录模块只接受明确的(未散列的)密码,那么您可能需要修改它,然后安装修改后的版本。

您现有的 JDBC 领域很可能有一个供应商特定的登录模块,但 Java EE 6 确实有一个用于构建登录模块(auth 模块)的标准化专用 API,称为 JASPIC。有关一些背景信息,请参阅本文

顺便说一下,对于一个名为OmniSecurity的 OmniFaces 子项目,我们一直在设计一个 JASPIC auth 模块的原型,它也支持记住我。它是开源的,因此您可以使用它来获得灵感。

于 2013-03-13T10:07:41.537 回答