网站内容自动更新(开源php框架的symfony中的一个很有名的扩展sfGuard)
优采云 发布时间: 2021-10-31 19:18网站内容自动更新(开源php框架的symfony中的一个很有名的扩展sfGuard)
我告诉你开源php框架symfony中一个著名的扩展sfGuard是怎么做的,可能会给你一些想法:
首先,您的数据库需要一个 rememberkey 表:它收录以下三个字段:
user_id、remember_key(string(32),unique)、ip_address,当然还有created_at和updated_at两个时间字段,几乎是必须的,没有提到。
如果用户在登录时勾选记住我
然后使用md5的一个随机值,比如timestamp + rand(0, 9999999)来生成一个remember_key。因为随机变化还是很大的,remember_key几乎不可能生成重复的key。
然后将此密钥存储在客户端 cookie 和数据库中。 cookie 的存储时间是您记住密码设置的时间长度。另外,ip必须记录在数据库中。
如果用户点击退出,在删除会话的同时,cookie中的remember_key和数据库中对应的key记录也会被删除。当然,为了防止垃圾数据越来越多,这个时候也可以全部通过。删除所有无效键
如果用户下次访问页面但会话已过期,则检查是否有remember_key cookie。如果有,使用这个值和访问的ip在数据库中查找记录。如果找到了,那么这条记录的 user_id 对应的用户就自动登录了。
当然,您可以进行一些修改。比如ip不一定是必须的,因为国内用户的ip会老变。