auth.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { useCache, CACHE_KEY } from "@hooks/useCache";
  2. import { decrypt, encrypt } from "@utils/jsencrypt";
  3. const { wsCache } = useCache();
  4. const AccessTokenKey = "ACCESS_TOKEN";
  5. const RefreshTokenKey = "REFRESH_TOKEN";
  6. type TokenType = {
  7. id: number; // 编号
  8. accessToken: string; // 访问令牌
  9. refreshToken: string; // 刷新令牌
  10. userId: number; // 用户编号
  11. userType?: number; //用户类型
  12. clientId?: string; //客户端编号
  13. expiresTime: number; //过期时间
  14. };
  15. // 获取token
  16. export const getAccessToken = () => {
  17. // 此处与TokenKey相同,此写法解决初始化时Cookies中不存在TokenKey报错
  18. const accessToken = wsCache.get(AccessTokenKey);
  19. return accessToken ? accessToken : wsCache.get("ACCESS_TOKEN");
  20. };
  21. // 刷新token
  22. export const getRefreshToken = () => {
  23. return wsCache.get(RefreshTokenKey);
  24. };
  25. // 设置token
  26. export const setToken = (token: TokenType) => {
  27. wsCache.set(RefreshTokenKey, token.refreshToken);
  28. wsCache.set(AccessTokenKey, token.accessToken);
  29. };
  30. // 删除token
  31. export const removeToken = () => {
  32. wsCache.delete(AccessTokenKey);
  33. wsCache.delete(RefreshTokenKey);
  34. };
  35. /** 格式化token(jwt格式) */
  36. export const formatToken = (token: string): string => {
  37. return "Bearer " + token;
  38. };
  39. // ========== 账号相关 ==========
  40. export type LoginFormType = {
  41. tenantName?: string;
  42. username: string;
  43. password: string;
  44. rememberMe?: boolean;
  45. };
  46. export const getLoginForm = () => {
  47. const loginForm: LoginFormType = wsCache.get(CACHE_KEY.LoginForm);
  48. if (loginForm) {
  49. loginForm.password = decrypt(loginForm.password) as string;
  50. }
  51. return loginForm;
  52. };
  53. export const setLoginForm = (loginForm: LoginFormType) => {
  54. loginForm.password = encrypt(loginForm.password) as string;
  55. wsCache.set(CACHE_KEY.LoginForm, loginForm, { exp: 30 * 24 * 60 * 60 });
  56. };
  57. export const removeLoginForm = () => {
  58. wsCache.delete(CACHE_KEY.LoginForm);
  59. };