whkl-m

后端层面

  • 前端登录成功之后,后端拿到useID,之后后端生成一个随机的密钥,密钥+useId来生成签名(token)返回给前端,同时把Jti(JWT id)存在redis里面(后端每次都随机生成密钥提高了安全性,jti存储在redis里面提高了读取速度)
  • 前端带token去请求,后台decode token 得到jti,拿到redis里面查是否有对应的jti,如果有就认为是合法的

前端层面

前端拿到token的存储有三种方式

  1. sessionStorage ,浏览器关闭就没了。

  2. 存 localstorage 就一直都在,后端返回过期标识时前端主动清除

  3. 存cookie的话,后端可以过期主动清除cookie, 前端在此过程中主要配合跳转到登录页就行

对于vue,为解决浏览器刷新路由重置的问题

拿到token后要将其保存到sessionStorage,根组件的created钩子负责检查本地是否已有token,如果有则无需登录直接用该token获取权限并初始化,如果token有效且当前路由有权访问,将加载路由组件并正确展现;若当前路由无权访问将按路由设置跳转404;如果token失效,后端应返回4xx状态码,前端统一为axios实例添加错误拦截器,遇到4xx状态码执行退出操作,清除sessionStorage数据并跳转到登录页,让用户重新登录。

分类:

杂类

技术点:

相关文章:

  • 2021-09-29
  • 2022-12-23
  • 2022-12-23
  • 2018-11-08
  • 2020-10-16
  • 2021-04-08
  • 2021-06-11
猜你喜欢
  • 2021-06-17
  • 2021-10-10
  • 2021-08-24
  • 2022-12-23
  • 2021-04-04
  • 2019-06-18
  • 2021-09-28
相关资源
相似解决方案