2

我需要在我的 JSF 网站上实现“记住我”功能,我一直在研究这个主题,试图找到最佳实践。我找到了很多答案,但我仍然有一个基于我使用的技术和我在数据库中存储用户密码的方式的问题。

总结我的发现

  • 创建一个包含用户和难以猜测的长序列的数据库表。
  • 当用户在选中记住我选项的情况下登录时,在 db 表上生成一个注册表并向用户发送一个包含用户名和序列号的 cookie。
  • 如果同一用户未登录,并且根据数据库具有有效的 cookie,则自动登录该用户。

我如何实际登录用户

基于 Java EE 标准,我使用 JAAS 并存储用户密码的 MD5 版本。我通过 HttpServletRequest 类的 login 方法登录我的用户,该方法需要用户名和密码才能验证身份验证并设置用户主体。


基于这两个事实,如果我需要用户名和密码才能登录用户,如何根据此最佳实践进行自动登录?

4

1 回答 1

2

如果我需要用户名和密码才能登录用户,如何根据此最佳实践进行自动登录?

只需根据“记住我”cookie 的值直接从数据库中获取用户名和密码。然后您可以将它们提供给该HttpServletRequest#login()方法。

请注意,“记住我”cookie 的值绝对不应包含有关用户名、密码或 ID 的任何提示。它应该是一个绝对随机的值。在java.util.UUID这里很有帮助。

也可以看看:

于 2012-11-29T16:01:37.183 回答