如何保存用户的登录状态
错误示范
用户登录后,使用 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 和 本地个人信息,并跳转到登录页