您可能不想存储密码。
您需要的是存储一些“用户已通过身份验证”标志。
毕竟,您应该了解“摘要访问身份验证”。存储散列数据总是有利的。
这个答案太短了,主要是因为这里有太多的可能性——还有太多的开放性问题。
处理回头客:
您可以管理(服务器端)会话数据库。在您只存储会话 ID 的 cookie 中。当用户进行身份验证时,您将其状态存储到服务器端数据库中:“登录”。当他注销时,您更改数据库状态:“注销”。
以任何方式处理返回用户与“存储密码”无关。例如,您可以通过外部身份验证服务(如 open-id、twitter、facebook 等)对用户进行身份验证,您只是通过某些会话 ID 或类似名称来存储他的状态。
浏览器通常可以存储用户名/密码,但这一直是用户的责任。当用户只想记住他的密码时,您不应该以任何方式存储它。
为什么您希望通过在 cookie 中存储加密密码来使您的应用程序和安全机制复杂化——从任何角度来看,这不是正确的解决方案?
简单流程:
- 当新用户访问您的站点时 - 您为他分配一个新的会话 ID 并将 SID 存储到 cookie 中
- 当他登录时(通过https)-您存储在您的数据库中=“sessionID”->“登录”
- 当他一周后返回时,您可以(服务器端)从 cookie 中接受他的会话 ID - 并且从 DB 中您可以获得他的“登录”状态,或者,您可以强制再次登录他(例如,因为到期)
- 以上所有内容都没有任何风险以任何方式存储密码