feat: ✨ 新增过期token请求判断
parent
d5d47ffae5
commit
5844e74d32
|
@ -0,0 +1,77 @@
|
||||||
|
"use strict";
|
||||||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||||||
|
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
|
||||||
|
var b64re = /^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;
|
||||||
|
exports.weBtoa = function (string) {
|
||||||
|
string = String(string);
|
||||||
|
var bitmap, a, b, c, result = "", i = 0, rest = string.length % 3;
|
||||||
|
for (; i < string.length;) {
|
||||||
|
if ((a = string.charCodeAt(i++)) > 255 ||
|
||||||
|
(b = string.charCodeAt(i++)) > 255 ||
|
||||||
|
(c = string.charCodeAt(i++)) > 255)
|
||||||
|
throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");
|
||||||
|
bitmap = (a << 16) | (b << 8) | c;
|
||||||
|
result += b64.charAt(bitmap >> 18 & 63) + b64.charAt(bitmap >> 12 & 63) +
|
||||||
|
b64.charAt(bitmap >> 6 & 63) + b64.charAt(bitmap & 63);
|
||||||
|
}
|
||||||
|
return rest ? result.slice(0, rest - 3) + "===".substring(rest) : result;
|
||||||
|
};
|
||||||
|
exports.weAtob = function (string) {
|
||||||
|
string = String(string).replace(/[\t\n\f\r ]+/g, "");
|
||||||
|
if (!b64re.test(string))
|
||||||
|
throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
|
||||||
|
string += "==".slice(2 - (string.length & 3));
|
||||||
|
var bitmap, result = "", r1, r2, i = 0;
|
||||||
|
for (; i < string.length;) {
|
||||||
|
bitmap = b64.indexOf(string.charAt(i++)) << 18 | b64.indexOf(string.charAt(i++)) << 12 |
|
||||||
|
(r1 = b64.indexOf(string.charAt(i++))) << 6 | (r2 = b64.indexOf(string.charAt(i++)));
|
||||||
|
result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255) :
|
||||||
|
r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255) :
|
||||||
|
String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
function b64DecodeUnicode(str) {
|
||||||
|
return decodeURIComponent(exports.weAtob(str).replace(/(.)/g, function (p) {
|
||||||
|
var code = p.charCodeAt(0).toString(16).toUpperCase();
|
||||||
|
if (code.length < 2) {
|
||||||
|
code = "0" + code;
|
||||||
|
}
|
||||||
|
return "%" + code;
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
function base64_url_decode(str) {
|
||||||
|
var output = str.replace(/-/g, "+").replace(/_/g, "/");
|
||||||
|
switch (output.length % 4) {
|
||||||
|
case 0:
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
output += "==";
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
output += "=";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw "Illegal base64url string!";
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return b64DecodeUnicode(output);
|
||||||
|
}
|
||||||
|
catch (err) {
|
||||||
|
return exports.weAtob(output);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function weappJwtDecode(token, options) {
|
||||||
|
if (typeof token !== "string") {
|
||||||
|
throw ("Invalid token specified");
|
||||||
|
}
|
||||||
|
options = options || {};
|
||||||
|
var pos = options.header === true ? 0 : 1;
|
||||||
|
try {
|
||||||
|
return JSON.parse(base64_url_decode(token.split(".")[pos]));
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
throw ("Invalid token specified: " + e.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
exports.default = weappJwtDecode;
|
|
@ -10,6 +10,8 @@ import Foundation from "@/utils/Foundation.js";
|
||||||
import api from "@/config/api.js";
|
import api from "@/config/api.js";
|
||||||
|
|
||||||
import uuid from "@/utils/uuid.modified.js";
|
import uuid from "@/utils/uuid.modified.js";
|
||||||
|
import jwt from '@/js_sdk/t-jwt/jwt.js'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let isNavigateTo = false
|
let isNavigateTo = false
|
||||||
|
@ -74,6 +76,16 @@ http.interceptors.request.use(
|
||||||
/* 请求之前拦截器。可以使用async await 做异步操作 */
|
/* 请求之前拦截器。可以使用async await 做异步操作 */
|
||||||
let accessToken = storage.getAccessToken();
|
let accessToken = storage.getAccessToken();
|
||||||
if (accessToken) {
|
if (accessToken) {
|
||||||
|
/**
|
||||||
|
* 使用JWT解析
|
||||||
|
* 小于当前时间将当前token清除
|
||||||
|
*/
|
||||||
|
const decodeJwt = jwt(accessToken);
|
||||||
|
const timing = new Date().getTime() / 1000
|
||||||
|
if(decodeJwt.exp <= timing){
|
||||||
|
accessToken = ""
|
||||||
|
storage.setAccessToken('')
|
||||||
|
}
|
||||||
const nonce = Foundation.randomString(6);
|
const nonce = Foundation.randomString(6);
|
||||||
const timestamp = parseInt(new Date().getTime() / 1000);
|
const timestamp = parseInt(new Date().getTime() / 1000);
|
||||||
const sign = md5(nonce + timestamp + accessToken);
|
const sign = md5(nonce + timestamp + accessToken);
|
||||||
|
|
Loading…
Reference in New Issue