zoukankan      html  css  js  c++  java
  • 对token机制的学习和分析

    token,中文意思为令牌,是用户登录后会返回的一个字符串,里面包括用户信息、登录时间等,但是是加密过的密文,其加解密方式由后端决定。

    在登录之后的接口请求中,前端需在请求中统一加上token,从而识别用户,可通过统一封装请求实现。

    而token也是会过期的,由后端配置确定的过期时间,与用户操不操作系统无关。若过期,则需调用refreshToken接口,把旧的token传给接口,从而获得新的token,前端再存储下来。

    当后端发回新的token后,再次用旧的token去获得新的token则会失败。

    token与session不同,session则无需在请求时前端手动添加,且session是否过期从用户不操作系统的时间开始算。

    当某页面中,多接口同时发起请求时,若此时token过期,则处理方式有两种:

    统一封装接口进行如下处理:

    1.若某个请求接口返回token过期,则请求refreshToken的接口,拿到新的token并存储后重新加载页面。

    2.最开始的时候设置isRefreshToken变量为true,若某个请求接口返回token过期,则去请求refreshToken的接口,并异步将isRefreshToken置为false。

    然后将剩下的请求进行排队等待(例如放入观察者数组),等第一个请求拿到新的token并存储到本地后,再将排队的接口放出去执行请求,并将isRefreshToken置为true。

    这里,isRefreshToken相当于一个锁,控制去刷新token的请求数始终为1。

  • 相关阅读:
    windows下安装mysql教程
    git基本操作
    JDK8,Optional
    重新安装MySQL 8出现的问题
    HTML5学习:缩略图
    HTML5学习:表格
    MySQL常用命令
    Django学习:创建admin后台管理站点
    Django学习:连接Mysql数据库
    Django学习:创建第一个app
  • 原文地址:https://www.cnblogs.com/luoyihao/p/11994806.html
Copyright © 2011-2022 走看看