Skip to content
On this page

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();

Released under the MIT License.