infly-libs
Version:
工具组件库
128 lines (111 loc) • 2.59 kB
JavaScript
// TokenService.js
import Uts from "./Uts"; // 假设Uts工具类在同级目录或可访问路径
let TOKEN_KEY = "accessToken"; // 默认的token键名
let CHAT_TOKEN_KEY = "chatAccessToken"; // 默认的聊天token键名
let URL_TOKEN_KEY = "accessToken"; // 链接参数带上的token键名
const TokenService = {
/**
* 初始化TokenService,可以配置token键名
* @param {Object} settings 一般在项目settings.js中
* @param {string} settings.tokenKey 主token的键名
* @param {string} settings.chatTokenKey 聊天token的键名
*/
init(settings = {}) {
if (settings.tokenKey) {
TOKEN_KEY = settings.tokenKey;
}
if (settings.chatTokenKey) {
CHAT_TOKEN_KEY = settings.chatTokenKey;
}
},
/**
* 获取主token的键名
* @returns {string}
*/
getTokenKey() {
return TOKEN_KEY;
},
/**
* 获取聊天token的键名
* @returns {string}
*/
getChatTokenKey() {
return CHAT_TOKEN_KEY;
},
/**
* 获取主token
* @returns {string}
*/
getToken() {
const accessTokenKey = TokenService.getUrlTokenKey();
const accessToken = Uts.getUrlParam(accessTokenKey); // 链接中带的token
return (
accessToken ||
Uts.storage.get(TOKEN_KEY) ||
Uts.getCookie(TOKEN_KEY) ||
""
);
},
/**
* 设置主token
* @param {string} token
*/
setToken(token) {
Uts.storage.set(TOKEN_KEY, token);
Uts.setCookie(TOKEN_KEY, token);
},
/**
* 移除主token
*/
removeToken() {
Uts.storage.remove(TOKEN_KEY);
Uts.removeCookie(TOKEN_KEY);
},
/**
* 设置聊天token
* @param {string} token
*/
setChatToken(token) {
Uts.storage.set(CHAT_TOKEN_KEY, token);
},
/**
* 获取聊天token
* @returns {string}
*/
getChatToken() {
return Uts.storage.get(CHAT_TOKEN_KEY) || "";
},
/**
* 移除聊天token
*/
removeChatToken() {
Uts.storage.remove(CHAT_TOKEN_KEY);
},
/**
* 获取链接中的token键名
* @returns
*/
getUrlTokenKey() {
return URL_TOKEN_KEY;
},
/**
* 获取链接中的token
*/
getUrlToken() {
return Uts.getUrlParam(URL_TOKEN_KEY);
},
/**
* 移除链接参数中带上的token
*/
removeUrlToken() {
Uts.removeState(URL_TOKEN_KEY);
},
/**
* 移除所有token
*/
removeAllTokens() {
this.removeToken();
this.removeChatToken();
}
};
export default TokenService;