hookehuyr

refactor(auth): 移除本地token过期检查,改用服务器获取用户信息

移除本地的token过期检查逻辑,改为在组件挂载时从服务器获取用户信息并更新本地存储。这提高了用户状态的准确性和安全性,避免了本地存储可能带来的不一致问题。
1 /* 1 /*
2 * @Date: 2025-03-20 21:11:31 2 * @Date: 2025-03-20 21:11:31
3 * @LastEditors: hookehuyr hookehuyr@gmail.com 3 * @LastEditors: hookehuyr hookehuyr@gmail.com
4 - * @LastEditTime: 2025-03-26 16:11:58 4 + * @LastEditTime: 2025-03-26 16:26:14
5 * @FilePath: /mlaj/src/contexts/auth.js 5 * @FilePath: /mlaj/src/contexts/auth.js
6 * @Description: 认证上下文管理模块,提供用户认证状态管理、登录登出功能 6 * @Description: 认证上下文管理模块,提供用户认证状态管理、登录登出功能
7 */ 7 */
8 8
9 // 导入Vue的组合式API相关函数 9 // 导入Vue的组合式API相关函数
10 import { ref, provide, inject, onMounted } from 'vue' 10 import { ref, provide, inject, onMounted } from 'vue'
11 -import { logoutAPI } from '@/api/users' 11 +import { logoutAPI, getUserInfoAPI } from '@/api/users'
12 12
13 // 创建认证上下文的Symbol key,用于provide/inject依赖注入 13 // 创建认证上下文的Symbol key,用于provide/inject依赖注入
14 // 使用Symbol确保key的唯一性,避免命名冲突 14 // 使用Symbol确保key的唯一性,避免命名冲突
...@@ -32,20 +32,20 @@ export function provideAuth() { ...@@ -32,20 +32,20 @@ export function provideAuth() {
32 * 检查登录token是否过期 32 * 检查登录token是否过期
33 * @returns {boolean} true表示token有效,false表示token已过期 33 * @returns {boolean} true表示token有效,false表示token已过期
34 */ 34 */
35 - const checkTokenExpiration = () => { 35 + // const checkTokenExpiration = () => {
36 - const loginTimestamp = localStorage.getItem('loginTimestamp') 36 + // const loginTimestamp = localStorage.getItem('loginTimestamp')
37 - if (loginTimestamp) { 37 + // if (loginTimestamp) {
38 - const now = Date.now() 38 + // const now = Date.now()
39 - const diff = now - parseInt(loginTimestamp) 39 + // const diff = now - parseInt(loginTimestamp)
40 - // 检查是否超过24小时(24 * 60 * 60 * 1000 毫秒) 40 + // // 检查是否超过24小时(24 * 60 * 60 * 1000 毫秒)
41 - if (diff > 24 * 60 * 60 * 1000) { 41 + // if (diff > 24 * 60 * 60 * 1000) {
42 - // token过期,清理登录状态并返回false 42 + // // token过期,清理登录状态并返回false
43 - logout() 43 + // logout()
44 - return false 44 + // return false
45 - } 45 + // }
46 - } 46 + // }
47 - return true 47 + // return true
48 - } 48 + // }
49 49
50 /** 50 /**
51 * 组件挂载时初始化用户状态 51 * 组件挂载时初始化用户状态
...@@ -53,12 +53,20 @@ export function provideAuth() { ...@@ -53,12 +53,20 @@ export function provideAuth() {
53 * 2. 检查token是否过期 53 * 2. 检查token是否过期
54 * 3. 恢复用户状态或保持登出状态 54 * 3. 恢复用户状态或保持登出状态
55 */ 55 */
56 - onMounted(() => { 56 + onMounted(async () => {
57 const savedUser = localStorage.getItem('currentUser') 57 const savedUser = localStorage.getItem('currentUser')
58 if (savedUser) { 58 if (savedUser) {
59 - // 检查token是否有效,有效则恢复用户状态 59 + // // 检查token是否有效,有效则恢复用户状态
60 - if (checkTokenExpiration()) { 60 + // if (checkTokenExpiration()) {
61 - currentUser.value = JSON.parse(savedUser) 61 + // currentUser.value = JSON.parse(savedUser)
62 + // }
63 + // 从服务器获取用户信息并更新本地存储
64 + const { code, data } = await getUserInfoAPI();
65 + if (code) {
66 + currentUser.value = data.user
67 + localStorage.setItem('currentUser', JSON.stringify(currentUser.value))
68 + } else {
69 + logout()
62 } 70 }
63 } 71 }
64 // 初始化完成,关闭加载状态 72 // 初始化完成,关闭加载状态
......