You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.8 KiB
71 lines
1.8 KiB
/**
|
|
* token 操作封装
|
|
*/
|
|
import { APP_SECRET, TOKEN_STORE_NAME } from '@/config';
|
|
import md5 from 'js-md5';
|
|
|
|
/**
|
|
* 获取缓存的 token
|
|
*/
|
|
export function getToken(): string | null {
|
|
const token = localStorage.getItem(TOKEN_STORE_NAME);
|
|
if (!token) {
|
|
return sessionStorage.getItem(TOKEN_STORE_NAME);
|
|
}
|
|
return token;
|
|
}
|
|
|
|
/**
|
|
* 缓存 token
|
|
* @param token token
|
|
* @param remember 是否永久存储
|
|
*/
|
|
export function setToken(token?: string, remember?: boolean) {
|
|
removeToken();
|
|
if (token) {
|
|
if (remember) {
|
|
localStorage.setItem(TOKEN_STORE_NAME, token);
|
|
} else {
|
|
sessionStorage.setItem(TOKEN_STORE_NAME, token);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 移除 token
|
|
*/
|
|
export function removeToken() {
|
|
localStorage.removeItem(TOKEN_STORE_NAME);
|
|
sessionStorage.removeItem(TOKEN_STORE_NAME);
|
|
localStorage.clear();
|
|
}
|
|
|
|
// 封装签名
|
|
export function getSign(form) {
|
|
if (form == null) {
|
|
return false;
|
|
}
|
|
let sign = '';
|
|
form.timestamp = new Date().getTime();
|
|
form.version = 'v3';
|
|
const arr = objKeySort(form);
|
|
Object.keys(arr).forEach((k) => {
|
|
if (form[k] != null && form[k] != '') {
|
|
sign = sign.concat(form[k]).concat('-');
|
|
}
|
|
});
|
|
sign = sign.concat(APP_SECRET);
|
|
return md5(sign);
|
|
}
|
|
// 参数按照字母顺序排序
|
|
export const objKeySort = (obj) => {
|
|
//排序的函数
|
|
const newkey = Object.keys(obj).sort();
|
|
//先用Object内置类的keys方法获取要排序对象的属性名,再利用Array原型上的sort方法对获取的属性名进行排序,newkey是一个数组
|
|
const newObj = {}; //创建一个新的对象,用于存放排好序的键值对
|
|
for (let i = 0; i < newkey.length; i++) {
|
|
//遍历newkey数组
|
|
newObj[newkey[i]] = obj[newkey[i]]; //向新创建的对象中按照排好的顺序依次增加键值对
|
|
}
|
|
return newObj; //返回排好序的新对象
|
|
};
|