我一直在研究在我的网站上实现持久登录的最佳(和最安全)方法,我提出了以下建议:
当用户登录时,会创建一个包含用户 ID/用户名和随机生成的数字(令牌)的 cookie。令牌与用户 ID/用户名一起存储在关系表中。每次加载仅限成员的页面时,都会根据关系表检查此 cookie,如果它存在并与令牌匹配,则登录有效并且可以加载页面。但是,如果不是,则登录无效,cookie 被销毁,并提示用户登录。
我在想...为了在每次加载页面时节省数据库访问,我还可以有一个会话变量,例如持续 10 分钟,并在浏览器关闭时自动销毁。如果会话是活动的,那么它会被刷新并且用户可以继续。如果会话过期,但 cookie 仍然有效,请检查 cookie,重置令牌,将新令牌存储在数据库中(同时消除旧令牌,或将其存储在存档表中以供将来参考),然后重置 cookie使用新的令牌值。
但是,会话将包含什么内容?怎么能不简单地用一些 JavaScript 伪造会话呢?也许会话包含单向加密哈希?将使用什么来生成该哈希(用户 ID 等)?
我有点想从这里去哪里。我得到了 cookie 的东西,但是使用临时会话(以避免每次加载页面时重复调用数据库)让我望而却步。有什么帮助吗?谢谢。