token 失效分为主动失效和被动失效

主动失效

就是自己设置函数检查token是否失效了,

主要步骤 ;1

  1.在登录的时候记录存储token的时间,

  2. 在request文件,设置一个函数,用来检查token是否过期

  3. 在请求拦截器记录当前的时间,并且引用函数主动检查token是否过期 ;

代码:

import axios from "axios";
import { Message } from "element-ui";
// 拿token有2种方式:方式1: 读取vuex的state; 方式2:读取cookie
import store from "@/store";
import router from "@/router";
import { getLoginTime } from "@/utils/auth";
// 主动检查token过期的方法
const tokenLongTime = 1000 * 60 * 60 * 2;
// const tokenLongTime = 1000 * 5;
function checkTimeOut() {
let curTime = Date.now(); // 发生请求的时间
let loginTime = getLoginTime(); // 登录当时的时间
if (curTime - loginTime > tokenLongTime) {
return true; // 过期了
} else {
return false; // 没有过期
}
} // 创建了一个新的axios实例
const service = axios.create({
// 读取环境变量文件里面的VUE_APP_BASE_API作为基准地址
baseURL: process.env.VUE_APP_BASE_API, // 接口基准地址
timeout: 5000, // 超时时间
}); // 请求拦截器
service.interceptors.request.use(
(config) => {
// 一定要return config,否则请求发生不出去
if (store.getters.token) {
// 有token,才判断是否过期
if (checkTimeOut()) {
Message.error("token过期,请重新登录");
store.dispatch("user/quitAction");
router.push("/login");
return Promise.reject("token过期,请重新登录");
}
// 没有过期就携带上
config.headers.Authorization = "Bearer " + store.getters.token;
}
return config;
},
(error) => {
return Promise.reject(error);
}
); // 响应拦截器 【解构数据,集中的错误处理,token过期】
service.interceptors.response.use(
(response) => {
// 一定要return,否则请求方法那边拿不到数据
const { success, code, data, message } = response.data;
if (success) {
// 业务成功
return data;
} else {
// 业务失败
Message.error(message);
return Promise.reject(message);
}
},
(error) => {
console.log("请求错误");
if (
error.response &&
error.response.data &&
error.response.data.code === 10002
) {
// token过期了
store.dispatch("user/quitAction");
router.push("/login");
Message.error("token过期,请求重新登录");
} else {
Message.error("请求异常");
}
// 请求错误
return Promise.reject(error);
}
);
// 暴露
export default service;

被动失效

就是让后端返回给我们数据,比如返回 401 就是token 过期 ,我们在响应拦截器做tokne过期的对应处理 ;

我这边采取的是被动失效,主要是后端失效之后会返回前端⼀个401的状态码,我们可以在axios的响应 拦截器⾥,去获取这个状态,如果发现是401就清理⼀下过去的token,然后重新跳转到登录⻚,获取有 效token,还有一个逻辑不是去跳转登录页,而是使用长refresh_token去获获取更新 token 然后把token 保存的vuex ,接着重新拿着新的config 配置项信息请i去数据,如果 refresh_token页过期了,就重新登录 ;

具体的代码:

https://www.cnblogs.com/zhulongxu/p/16810541.html

token有⼀定的失效性,过期了该怎么做?的更多相关文章

  1. 从NSTimer的失效性谈起(二):关于GCD Timer和libdispatch

    一.GCD Timer的创建和安放 尽管GCD Timer并不依赖于NSRunLoop,可是有没有可能在某种情况下,GCD Timer也失效了?就好比一開始我们也不知道NSTimer相应着一个runl ...

  2. K均值聚类的失效性分析

    K均值聚类是一种应用广泛的聚类技术,特别是它不依赖于任何对数据所做的假设,比如说,给定一个数据集合及对应的类数目,就可以运用K均值方法,通过最小化均方误差,来进行聚类分析. 因此,K均值实际上是一个最 ...

  3. 【定有惊喜】android程序员如何做自己的API接口?php与android的良好交互(附环境搭建),让前端数据动起来~

    一.写在前面 web开发有前端和后端之分,其实android还是有前端和后端之分.android开发就相当于手机app的前端,一般都是php+android或者jsp+android开发.androi ...

  4. JWT生成token及过期处理方案

    业务场景 在前后分离场景下,越来越多的项目使用token作为接口的安全机制,APP端或者WEB端(使用VUE.REACTJS等构建)使用token与后端接口交互,以达到安全的目的.本文结合stacko ...

  5. Token过期处理

    Token用于进行接口鉴权,但是Token具有由后端设置的过期时间,当Token过期以后,就无法再请求数据了 项目中后端设置的过期时间为24h,测试时我们可以手动修改token值让Token失效 处理 ...

  6. laravel jwt 做API 退出登录(注销) 该怎么弄? 如何让token失效

    laravel jwt 做API 退出登录(注销) 该怎么弄? 如何让token失效 php框架 laravel 2.1k 次浏览 问题对人有帮助,内容完整,我也想知道答案0问题没有实际价值,缺少关键 ...

  7. axios reponse请求拦截以及token过期跳转问题

    前两天项目中遇到了token拦截,需要在请求的header头里放置token,需要用到response拦截,调试过程中遇到了拿不到token的问题 我用的axios实例 let token = sto ...

  8. Web API与OAuth:既生access token,何生refresh token

    在前一篇博文中,我们基于 ASP.NET Web API 与 OWIN OAuth 以 Resource Owner Password Credentials Grant 的授权方式( grant_t ...

  9. .NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制

    项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩过webAPI,但是领导要求必须用这个(具体原因鬼知道),只好硬着头皮上了. 最近刚做完权限这一块,分享出来给大家.欢 ...

  10. WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制

    .NET WebAPI 用ActionFilterAttribute实现token令牌验证与对Action的权限控制 项目背景是一个社区类的APP(求轻吐...),博主主要负责后台业务及接口.以前没玩 ...

随机推荐

  1. 【C】Re01

    一.GCC分步编译 xxx.c文件经历的一系列编译过程: #include <stdio.h> int main() { printf("Hello, World!\n" ...

  2. Ubuntu18.04环境下 以太坊Geth的安装

    ubuntu18.04系统下安装: sudo apt-get install software-properties-common sudo add-apt-repository -y ppa:eth ...

  3. 再探 游戏 《 2048 》 —— AI方法—— 缘起、缘灭(3) —— 游戏AI解法设计篇

    接前文: 再探 游戏 < 2048 > -- AI方法-- 缘起.缘灭(2) -- 游戏环境设计篇 - Hello_BeautifulWorld - 博客园 (cnblogs.com) = ...

  4. ubuntu22.04 终端显示数字剑雨

    数字剑雨是读大学时候常用的屏保,这些年基本也再没有用过,不经意间想到了这个曾经的屏保,发现Ubuntu原版的桌面系统是没有屏保的,又不想换桌面系统,想想还是单独安装一下这个数字剑雨吧. 在Ubuntu ...

  5. 恭喜社区迎来新PMC成员!

    恭喜Apache SeaTunnel社区又迎来一位PMC Member@liugddx!在社区持续活跃的两年间,大家经常看到这位开源爱好者出现在社区的各种活动中,为项目和社区发展添砖加瓦.如今成为项目 ...

  6. 删除个文件夹,vfs2上传文件到ftp就异常553,这么不经事吗

    开心一刻 今天逛街碰到街头采访,一上来就问我敏感话题 主持人:小哥哥,你单身吗 我:是啊 主持人:你找女朋友的话,是想找一个小奶猫呢,还是小野猫呢 我沉思了一下,叹气道:如果可以的话,我想找个人,而且 ...

  7. SenseCraft 部署模型到Grove Vision AI V2图像处理模块

    Grove Vision AI V2 图像处理模块开箱测评 摘要 今天教大家快速上手 Grove Vision AI V2 图像处理模块,我们将一起探讨如何利用 SenseCraft 部署 AI 模型 ...

  8. 2023 ICPC 杭州题解

    游记 gym F. Top Cluster std 二分答案.需要判断点权 \(\le mid\) 的点到询问点的最大距离.直径. K. Card Game 设 \(f[l,r]\) 为 \([l,r ...

  9. CF1234D

    CF1234D 链接: https://codeforces.com/problemset/problem/1234/D 题目大意: 给你一个字符串s,你需要完成如下q次询问 把 s 的第 p 位改为 ...

  10. 优秀架构设计与web文档

    架构风格与基于网络的软件架构设计 https://docs.huihoo.com/rest/REST_cn.pdf rfc https://tools.ietf.org/html/rfc2616