auth
操作授权 token
的相关方法
DANGER
新的授权方案下,前端无法再获取身份验证 token, 因此该部分的方法将废弃
getTokenKey
根据部署环境获取 token 的 key 值
函数参数和返回值
js
/**
* @param {boolean} isDefaultTokenKey 是否获取默认 token-key: 'token'
* @return {string} token-key
*/
展示源码
ts
type envToken = 'dev-auth-token' | 'test-auth-token' | 'stage-auth-token' | 'prod-auth-token';
/**
*
* @param isDefaultTokenKey 是否获取默认token-key: 'token'
*/
export function getTokenKey(isDefaultTokenKey: boolean = false): 'token' | envToken {
const DEFAULT_KEY = 'token';
if (isDefaultTokenKey) {
return DEFAULT_KEY;
}
const isDynamical = !!window.ENV;
if (isDynamical) {
if (window.ENV) {
return `${window.ENV.toLowerCase()}-auth-token` as envToken;
}
throw Error('初始化tokenKey无法找到window.ENV,获取tokenKey失败');
}
return DEFAULT_KEY;
}
代码用例
js
const tokenKey = getTokenKey();
getToken
根据部署环境获取保存在 cookie 里的 token
函数内部调用
getTokenKey()
得到token key
,再调用getCookie()
取出cookie
中该key
所对应的token
。
函数参数和返回值
js
/**
* @param {boolean} isDefaultTokenKey 是否获取默认 token-key: 'token'
* @return {string} token
*/
展示源码
ts
/**
*
* @param isDefaultTokenKey 是否获取默认token-key: 'token'
*/
export function getToken(isDefaultTokenKey: boolean = false): string {
console.error('后端新架构若采用passport则前端无法再获取身份验证token');
try {
const key = getTokenKey(isDefaultTokenKey);
if (key) {
return getCookie(key);
}
} catch {
throw Error('获取token出错,未找到正确的tokenKey');
}
}
代码用例
js
const token = getToken();
setToken
接收一个 token
值,并将它储存在 cookie
中
默认 cookie
key
为'token'
,expires
为一年
函数参数和返回值
js
/**
* @param {string} token的值
* @return 无返回值
*/
展示源码
ts
/**
*
* @deprecated 接口分发,前端存储 Token 的方式即将废弃
* @deprecated 更换统一登录,采用HTTP Response-Header[set-cookie]
* @param token String
*/
export const setToken = (token: string): void => {
console.error('不再建议前端使用setToken方法来管理用户信息');
const expires = new Date();
expires.setFullYear(expires.getFullYear() + 1);
setCookie('token', token, {
expires
});
};
代码用例
js
setToken('KJHpWe9Vx5eBMUWHOuhbTxpkefABsUTpppMAzWgZ6C');
getJWT
从 cookie 中获取 JWT 对象值
函数内部调用
getToken()
获取token
并解码JWT
函数参数和返回值
js
/**
* @param {boolean} options.isDefaultTokenKey 是否获取默认token-key: 'token'
* @return object-jwt
*/
展示源码
ts
/**
* @deprecated 接口分发,前端存储 Token 的方式即将废弃
* @deprecated 更换统一登录,采用HTTP Response-Header[set-cookie]
* @param options.isDefaultTokenKey String. DefaultValue: false
* @returns object-jwt
*/
export function getJWT(
options = {
isDefaultTokenKey: false
}
): Jwt | null {
const token = getToken(options.isDefaultTokenKey);
let payload = '';
let jwt = null;
if (token) {
payload = token.split('.')[1];
}
try {
jwt = JSON.parse(base64Decode(payload));
} catch (e) {
console.log('JSON.parse解析jwt出错,jwt不合法');
}
return jwt;
}
代码用例
js
const JWT = getJWT();