From a3c363cbc9e91ef2ad9363323d8b5a187eecb1a3 Mon Sep 17 00:00:00 2001 From: zoujing Date: Mon, 15 Dec 2025 16:26:45 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8C=BA=E5=88=AB=E4=B8=8D=E5=90=8C?= =?UTF-8?q?=E7=9A=84=E5=B0=8F=E7=A8=8B=E5=BA=8F=E7=9A=84=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/constant/token.js | 19 +++++++++++++++++++ src/hooks/useGoLogin.js | 7 ++++--- src/manager/LoginManager.js | 5 +++-- .../components/chat/ChatMainList/index.vue | 5 +++-- src/request/api/AgentChatStream.js | 11 ++++++----- src/request/api/LoginApi.js | 3 ++- src/request/api/UpdateFile.js | 3 ++- src/request/base/request.js | 6 ++++-- 8 files changed, 43 insertions(+), 16 deletions(-) create mode 100644 src/constant/token.js diff --git a/src/constant/token.js b/src/constant/token.js new file mode 100644 index 0000000..7f3b1de --- /dev/null +++ b/src/constant/token.js @@ -0,0 +1,19 @@ +import { appId, clientId } from "@/constant/base"; + +/// 存储在本地的认证 token 键名 +export const clientAuthToken = "AUTH_TOKEN_" + clientId + "_" + appId; + +/// 设置本地存储的认证 token +export const setStorageSyncToken = (token) => { + uni.setStorageSync(clientAuthToken, token); +}; + +/// 获取本地存储的认证 token +export const getStorageSyncToken = () => { + return uni.getStorageSync(clientAuthToken); +}; + +/// 移除本地存储的认证 token +export const removeStorageSyncToken = () => { + uni.setStorageSync(clientAuthToken, ""); +}; \ No newline at end of file diff --git a/src/hooks/useGoLogin.js b/src/hooks/useGoLogin.js index 561aca5..0374d01 100644 --- a/src/hooks/useGoLogin.js +++ b/src/hooks/useGoLogin.js @@ -2,6 +2,7 @@ import { wxLogin } from "../request/api/LoginApi"; import { loginAuth, bindPhone, checkPhone } from "@/manager/LoginManager"; import { clientId } from "@/constant/base"; import { NOTICE_EVENT_LOGIN_SUCCESS } from "@/constant/constant"; +import { getStorageSyncToken, setStorageSyncToken } from "../constant/token"; // 跳转登录 export const goLogin = () => uni.navigateTo({ url: "/pages/login/index" }); @@ -47,7 +48,7 @@ export const onLogin = async (e) => { // 检测token export const checkToken = () => { - const token = uni.getStorageSync("token"); + const token = getStorageSyncToken(); return new Promise((resolve) => { if (!token) { @@ -61,7 +62,7 @@ export const checkToken = () => { // 刷新token export const refreshToken = () => { - const token = uni.getStorageSync("token"); + const token = getStorageSyncToken(); if (!token) { return; @@ -81,7 +82,7 @@ export const refreshToken = () => { const response = await wxLogin(params); if (response.access_token) { - uni.setStorageSync("token", response.access_token); + setStorageSyncToken(response.access_token); // 登录成功后,触发登录成功事件 uni.$emit(NOTICE_EVENT_LOGIN_SUCCESS); } diff --git a/src/manager/LoginManager.js b/src/manager/LoginManager.js index 50bdf4d..f8fda60 100644 --- a/src/manager/LoginManager.js +++ b/src/manager/LoginManager.js @@ -7,9 +7,10 @@ import { getWeChatAuthCode } from "./AuthManager"; import { useAppStore } from "@/store"; import { clientId } from "@/constant/base"; import { NOTICE_EVENT_LOGIN_SUCCESS } from "@/constant/constant"; +import { removeStorageSyncToken, setStorageSyncToken } from "../constant/token"; const loginAuth = (e) => { - uni.setStorageSync("token", ""); + removeStorageSyncToken(); const appStore = useAppStore(); return new Promise(async (resolve, reject) => { @@ -26,7 +27,7 @@ const loginAuth = (e) => { console.log("获取到的微信授权response:", response); if (response.access_token) { - uni.setStorageSync("token", response.access_token); + setStorageSyncToken(response.access_token); // 登录成功后,触发登录成功事件 uni.$emit(NOTICE_EVENT_LOGIN_SUCCESS); resolve(); diff --git a/src/pages/index/components/chat/ChatMainList/index.vue b/src/pages/index/components/chat/ChatMainList/index.vue index 86deced..fe6d8f4 100644 --- a/src/pages/index/components/chat/ChatMainList/index.vue +++ b/src/pages/index/components/chat/ChatMainList/index.vue @@ -159,6 +159,7 @@ import WebSocketManager from "@/utils/WebSocketManager"; import { ThrottleUtils, IdUtils } from "@/utils"; import { checkToken } from "@/hooks/useGoLogin"; import { useAppStore } from "@/store"; +import { getStorageSyncToken } from "@/constant/token"; const appStore = useAppStore(); /// 导航栏相关 @@ -346,7 +347,7 @@ onLoad(() => { // token存在,初始化数据 const initHandler = () => { console.log("initHandler"); - const token = uni.getStorageSync("token"); + const token = getStorageSyncToken(); if (!token) return; loadRecentConversation(); @@ -414,7 +415,7 @@ const initWebSocket = async () => { } // 使用配置的WebSocket服务器地址 - const token = uni.getStorageSync("token"); + const token = getStorageSyncToken(); const wsUrl = `${appStore.serverConfig.wssUrl}?access_token=${token}`; // 初始化WebSocket管理器 diff --git a/src/request/api/AgentChatStream.js b/src/request/api/AgentChatStream.js index 755429d..7601798 100644 --- a/src/request/api/AgentChatStream.js +++ b/src/request/api/AgentChatStream.js @@ -1,5 +1,7 @@ import { goLogin } from "@/hooks/useGoLogin"; import { useAppStore } from "@/store"; +import { getStorageSyncToken } from "@/constant/token"; +import { removeStorageSyncToken } from "@/constant/token"; /// 请求流式数据的API const API = "/agent/assistant/chat"; @@ -72,7 +74,7 @@ const stopAbortTask = () => { const agentChatStream = (params, onChunk) => { return new Promise((resolve, reject) => { - const token = uni.getStorageSync("token"); + const token = getStorageSyncToken(); const requestId = Date.now().toString(); // 生成唯一请求ID // 重置状态 @@ -130,7 +132,7 @@ const agentChatStream = (params, onChunk) => { res.statusCode ); if (res.statusCode === 424) { - uni.setStorageSync("token", ""); + removeStorageSyncToken(); goLogin(); } if (onChunk) { @@ -144,8 +146,7 @@ const agentChatStream = (params, onChunk) => { } } else { console.log( - `❌ 请求 [${requestId}] ${ - isAborted ? "已终止" : "已过期" + `❌ 请求 [${requestId}] ${isAborted ? "已终止" : "已过期" },忽略complete回调` ); } @@ -240,7 +241,7 @@ const weAtob = (string) => { r2, i = 0; - for (; i < string.length; ) { + for (; i < string.length;) { bitmap = (b64.indexOf(string.charAt(i++)) << 18) | (b64.indexOf(string.charAt(i++)) << 12) | diff --git a/src/request/api/LoginApi.js b/src/request/api/LoginApi.js index d16f6ad..568e2a8 100644 --- a/src/request/api/LoginApi.js +++ b/src/request/api/LoginApi.js @@ -1,3 +1,4 @@ +import { removeStorageSyncToken } from "@/constant/token"; import request from "../base/request"; const wxLogin = (args) => { @@ -8,7 +9,7 @@ const wxLogin = (args) => { }, }; - uni.setStorageSync("token", ""); + removeStorageSyncToken(); return request.post("/auth/oauth2/token", args, config); }; diff --git a/src/request/api/UpdateFile.js b/src/request/api/UpdateFile.js index a3cad0d..f6b771f 100644 --- a/src/request/api/UpdateFile.js +++ b/src/request/api/UpdateFile.js @@ -1,10 +1,11 @@ import { getCurrentConfig } from "@/constant/base"; import { useAppStore } from "@/store"; +import { getStorageSyncToken } from "@/constant/token"; export const updateImageFile = (file) => { const { serverConfig } = useAppStore(); const url = serverConfig.baseUrl + "/hotelBiz/hotBizCommon/upload"; - const token = uni.getStorageSync("token"); + const token = getStorageSyncToken(); const clientId = getCurrentConfig().clientId; return new Promise((resolve, reject) => { diff --git a/src/request/base/request.js b/src/request/base/request.js index 7744144..c9f7370 100644 --- a/src/request/base/request.js +++ b/src/request/base/request.js @@ -2,6 +2,8 @@ import { goLogin } from "../../hooks/useGoLogin"; import { getCurrentConfig } from "@/constant/base"; import { useAppStore } from "@/store"; import { NOTICE_EVENT_LOGOUT } from "@/constant/constant"; +import { getStorageSyncToken } from "@/constant/token"; +import { removeStorageSyncToken } from "@/constant/token"; const clientId = getCurrentConfig().clientId; const defaultConfig = { @@ -19,7 +21,7 @@ function request(url, args = {}, method = "POST", customConfig = {}) { url = appStore.serverConfig?.baseUrl + url; } // 动态获取 token - const token = uni.getStorageSync("token"); + const token = getStorageSyncToken(); let header = { ...defaultConfig.header, @@ -58,7 +60,7 @@ function request(url, args = {}, method = "POST", customConfig = {}) { resolve(res.data); if (res.statusCode && res.statusCode === 424) { console.log("424错误,重新登录"); - uni.setStorageSync("token", ""); + removeStorageSyncToken(); uni.$emit(NOTICE_EVENT_LOGOUT); goLogin(); }