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。

  • 相关阅读:
    html5 存储(删除)
    java 单例模式
    android知识点汇总
    java多线程 与 并发
    cuda GPU 编程之共享内存的使用
    vs 2015 + OPENGL 配置
    Ubuntu 14.04 安装 CUDA 问题及解决
    性能分析工具gprof介绍
    vim 换行方式 win 转Ubuntu vim 格式调整
    计算显卡对比
  • 原文地址:https://www.cnblogs.com/luoyihao/p/11994806.html
Copyright © 2011-2022 走看看