auth.js 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. /**
  2. * 认证工具类
  3. */
  4. const TOKEN_KEY = 'token';
  5. const USER_INFO_KEY = 'userInfo';
  6. /**
  7. * 获取Token
  8. */
  9. export function getToken() {
  10. return uni.getStorageSync(TOKEN_KEY);
  11. }
  12. /**
  13. * 设置Token
  14. */
  15. export function setToken(token) {
  16. return uni.setStorageSync(TOKEN_KEY, token);
  17. }
  18. /**
  19. * 移除Token
  20. */
  21. export function removeToken() {
  22. return uni.removeStorageSync(TOKEN_KEY);
  23. }
  24. /**
  25. * 获取用户信息
  26. */
  27. export function getUserInfo() {
  28. return uni.getStorageSync(USER_INFO_KEY);
  29. }
  30. /**
  31. * 设置用户信息
  32. */
  33. export function setUserInfo(userInfo) {
  34. return uni.setStorageSync(USER_INFO_KEY, userInfo);
  35. }
  36. /**
  37. * 移除用户信息
  38. */
  39. export function removeUserInfo() {
  40. return uni.removeStorageSync(USER_INFO_KEY);
  41. }
  42. /**
  43. * 检查是否已登录
  44. */
  45. export function isLoggedIn() {
  46. const token = getToken();
  47. return !!token;
  48. }
  49. /**
  50. * 清除所有认证信息
  51. */
  52. export function clearAuth() {
  53. removeToken();
  54. removeUserInfo();
  55. }
  56. /**
  57. * 登录
  58. */
  59. export function login(loginData) {
  60. return new Promise((resolve, reject) => {
  61. // 模拟登录API调用
  62. setTimeout(() => {
  63. if (loginData.username === 'admin' && loginData.password === 'admin') {
  64. const token = 'mock-token-' + Date.now();
  65. const userInfo = {
  66. id: 1,
  67. username: loginData.username,
  68. nickname: '管理员',
  69. avatar: '/static/avatar.png',
  70. title: '系统管理员',
  71. };
  72. setToken(token);
  73. setUserInfo(userInfo);
  74. resolve({
  75. success: true,
  76. data: {
  77. token,
  78. userInfo,
  79. },
  80. });
  81. } else {
  82. reject(new Error('用户名或密码错误'));
  83. }
  84. }, 1000);
  85. });
  86. }
  87. /**
  88. * 退出登录
  89. */
  90. export function logout() {
  91. return new Promise((resolve) => {
  92. clearAuth();
  93. // 跳转到登录页
  94. uni.reLaunch({
  95. url: '/pages/login/login',
  96. });
  97. resolve({ success: true });
  98. });
  99. }
  100. /**
  101. * 检查登录状态并跳转
  102. */
  103. export function checkAuth() {
  104. if (!isLoggedIn()) {
  105. uni.reLaunch({
  106. url: '/pages/login/login',
  107. });
  108. return false;
  109. }
  110. return true;
  111. }