如何保存用户的登录状态

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

 

posted @ 2021-04-21 16:31  就叫我老管吧  阅读(2623)  评论(0编辑  收藏  举报