我需要一种方法来维护会话,即使在用户关闭浏览器(直到用户单击注销)而不在数据库中存储会话之后。
最好的方法是什么?
我可以将用户名 + 密码(散列)存储在 cookie 中吗?
保存在过期时间较长的 cookie 中(比如 1 个月左右)。不必是密码散列,只是一些标识散列,存储在数据库以及用户端(比较),以便您进行比较。
当用户登录时,您应该生成一个随机令牌并 1)将其保存在您的数据库中,2)使用用户名和这个随机令牌设置一个 cookie。
然后,您应该创建一个函数来获取此 cookie 并将令牌与数据库中的令牌相匹配。如果令牌相同,您应该启动一个会话并生成一个新的。
使用随机令牌而不是密码,否则它将始终相同。
请记住,您的“用户是否登录”功能必须首先检查会话是否打开,否则它将为用户访问的每个页面重复此过程。