记住我
如何保存⽤户的登录状态
错误⽰范
⽤户登录后,使⽤ localStorage ⽅法在浏览器客户端直接保存 user_id,每次进⼊⽹站时,通过识别 user_id ⾃动获取⽤户的信息并实现登录。
错误点
浏览器 localStorage 保存的数据可能被——篡改
在浏览器控制台使⽤ localStorage.setItem() 即可更改当前 user_id,如果 user_id 被别⼈改了,那岂不是可以随意窃取任何⼈的信息?
使⽤cookie保存⽤户 id 也有⼀样的风险,
所以使⽤这种⽅法做保存登录状态和⾃动登录是不安全的
问题解决:Token
⽤户登录,后端加密⽣成 token,保存在⽤户表中,并返回给前端
前端获取 token,保存在 localStorage 中
⾃动登录
进⼊⽹站,前端检测到 token ,⾸先进⾏ token 验证
后端验证 token ,到相关⽤户,然后返回数据,实现登录
发送请求,解析出 user_id
请求中携带 token
在需要验证 token 的 controller 中定义 public function verifytoken() ⽅法
在需要验证 token 的接⼝中调⽤这个函数,然后解析出 user_id
解决策略:
使⽤ localStorage + token ⽅法进⾏⾝份验证
登录:前端保存 token 和个⼈信息(姓名、头像等,不包括user_id)
每次进⼊⽹站先验证 token 是否过期,如果没过期,则保持当前状态,如果过期,则清空本地 token 和本地个⼈信息,并跳转到登录页