You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
virtual-patient-web/src/utils/auth.ts

63 lines
2.2 KiB
TypeScript

2 years ago
import Cookies from "js-cookie";
import { storageSession } from "@pureadmin/utils";
// import { useUserStoreHook } from "@/store/modules/user";
2 years ago
export interface DataInfo<T> {
/** token */
accessToken: string;
/** `accessToken`的过期时间(时间戳) */
expires: T;
/** 用于调用刷新accessToken的接口时所需的token */
refreshToken: string;
/** 用户名 */
username?: string;
/** 当前登陆用户的角色 */
roles?: Array<string>;
}
export const sessionKey = "user-info";
export const TokenKey = "authorized-token";
/** 获取`token` */
export function getToken(): DataInfo<number> {
// 此处与`TokenKey`相同,此写法解决初始化时`Cookies`中不存在`TokenKey`报错
// return Cookies.get(TokenKey)
// ? JSON.parse(Cookies.get(TokenKey))
// : storageSession().getItem(sessionKey);
return storageSession().getItem("token");
}
/**
* @description `token``token`
* `accessToken`访使`token``refreshToken``accessToken``token``refreshToken`30`accessToken`2`expires``accessToken`
* `accessToken``expires`keyauthorized-tokencookie
* `username``roles``refreshToken``expires`key`user-info`sessionStorage
*/
export function setToken(data: any) {
storageSession().setItem("token", data);
}
export function setUserInfo(data: any) {
storageSession().setItem("userInfo", JSON.stringify(data));
}
export function getUserInfo() {
const data = storageSession().getItem("userInfo");
return data;
}
2 years ago
/** 删除`token`以及key值为`user-info`的session信息 */
export function removeToken() {
Cookies.remove(TokenKey);
sessionStorage.clear();
}
/** 格式化tokenjwt格式 */
export const formatToken = (token: string): string => {
return "Bearer " + token;
};
export function clearObject(obj) {
Object.keys(obj).forEach(key => {
obj[key] = null; // 或者 obj[key] = undefined;
});
}