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