如果您需要存储以下信息
那么你必须使用会话 http://www.splinter.com.au/how-to-use-sessions-with-struts-2/,通过实施SessionAware
:
也就是说,我不确定您是否应该存储用户密码,也不应该将密码与用户相关联;
您应该在您的Web应用程序中创建一个登录页面,仅处理该操作中的密码,根据数据库(或其他)验证它,并在会话中存储一些身份验证ID,而不是密码本身(您不会验证用户再次强调,除非会话过期,否则用户将被重定向到登录页面...无需将密码保存在内存中)。
也就是说,用户身份验证的最佳实践不鼓励根据数据库中存储的密码来验证输入的密码;
你应该使用一些单向散列算法 http://en.wikipedia.org/wiki/Cryptographic_hash_function (加盐 http://en.wikipedia.org/wiki/Salt_%28cryptography%29阻止Rainbow Table
s 攻击)对密码进行哈希处理,并根据数据库中的哈希密码进行检查。这样,即使是数据库管理员也无法知道用户的密码,并且如果忘记密码,它将被重置,而不是检索。
在 Java 中最好的实现之一是jBCrypt http://www.mindrot.org/projects/jBCrypt/, 基于BCrypt http://en.wikipedia.org/wiki/Bcrypt.
希望有帮助...
EDIT
作为从概念上分离 Web 应用程序中处理的对象的一种方法,您可以使用两种不同的 Bean:一个用于读取的“完整 Bean”,包含所有属性;一个用于写入的“子集 Bean”,仅包含可以读取的属性。改变。
例如,ID 和密码不应更改...您可以从数据库读取“完整”,然后写入 JSP,然后写入数据库“子集”(除了在用户注册中,您将在其中写入完整)。 ..
为了更容易理解,Full Bean 是Dao
对象精确映射数据库字段,而子集 Bean 是一个Presentation
对象,您将通过仅从 Dao 对象复制所需的属性来创建该对象...它们都是 DTO,但具有两个不同级别的语义。
否则,只需将您的 bean 放入会话中,它只是一行代码,就可以了。