From 80ee3ca5a5d914288973c489b8d77ffd740d3b31 Mon Sep 17 00:00:00 2001 From: dayjoy Date: Thu, 11 Sep 2025 10:59:02 +0800 Subject: [PATCH] =?UTF-8?q?feat(client):=20=E6=B7=BB=E5=8A=A0=E5=AF=B9grou?= =?UTF-8?q?pId=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/client/src/App.tsx | 6 +++--- packages/client/src/api/index.ts | 8 ++++++- packages/client/src/utils/auth.ts | 36 +++++++++++++++++++++++++++++-- 3 files changed, 44 insertions(+), 6 deletions(-) diff --git a/packages/client/src/App.tsx b/packages/client/src/App.tsx index ca1e24e..39f21b2 100644 --- a/packages/client/src/App.tsx +++ b/packages/client/src/App.tsx @@ -1,12 +1,12 @@ import "./App.css"; import React, { useEffect } from "react"; import { Routes } from "react-router-dom"; -import { handleAuthTokenFromUrl } from "./utils/auth"; +import {handleAuthTokenAndGroupIdFromUrl} from "./utils/auth"; const App: React.FC = () => { useEffect(() => { - // 在组件挂载时处理URL中的authToken - handleAuthTokenFromUrl(); + // 在组件挂载时处理URL中的authToken 和 groupId + handleAuthTokenAndGroupIdFromUrl(); }, []); return ( diff --git a/packages/client/src/api/index.ts b/packages/client/src/api/index.ts index 3a7adf0..ece297d 100644 --- a/packages/client/src/api/index.ts +++ b/packages/client/src/api/index.ts @@ -1,4 +1,4 @@ -import { getAuthToken } from '../utils/auth'; +import {getAuthToken, getGroupId} from '../utils/auth'; interface RequestOptions extends RequestInit { headers?: Record; @@ -13,6 +13,7 @@ export const apiRequest = async ( options: RequestOptions = {} ): Promise => { const authToken = getAuthToken(); + const groupId = getGroupId(); const url = endpoint; @@ -27,6 +28,11 @@ export const apiRequest = async ( headers.authorization = `Bearer ${authToken}`; } + // 如果有groupId,添加groupId头 + if (groupId) { + headers.groupId = groupId; + } + // 发起请求 const response = await fetch(url, { ...options, diff --git a/packages/client/src/utils/auth.ts b/packages/client/src/utils/auth.ts index 89f2b93..3d29de6 100644 --- a/packages/client/src/utils/auth.ts +++ b/packages/client/src/utils/auth.ts @@ -1,6 +1,7 @@ // 处理认证相关的工具函数 const AUTH_TOKEN_KEY = 'authToken'; +const GROUP_ID_KEY = 'groupId'; /** * 从URL搜索参数中获取authToken @@ -9,6 +10,13 @@ export const getAuthTokenFromUrl = (): string | null => { const urlParams = new URLSearchParams(window.location.search); return urlParams.get('authToken'); }; +/** + * 从URL搜索参数中获取groupId + */ +export const getGroupIdFromUrl = (): string | null => { + const urlParams = new URLSearchParams(window.location.search); + return urlParams.get('groupId'); +}; /** * 保存authToken到localStorage @@ -17,6 +25,13 @@ export const saveAuthToken = (token: string): void => { localStorage.setItem(AUTH_TOKEN_KEY, token); }; +/** + * 保存groupId到localStorage + */ +export const saveGroupId = (groupId: string): void => { + localStorage.setItem(GROUP_ID_KEY, groupId); +}; + /** * 从localStorage获取authToken */ @@ -24,6 +39,13 @@ export const getAuthToken = (): string | null => { return localStorage.getItem(AUTH_TOKEN_KEY); }; +/** + * 从localStorage获取groupId + */ +export const getGroupId = (): string | null => { + return localStorage.getItem(GROUP_ID_KEY); +}; + /** * 清除authToken */ @@ -31,18 +53,28 @@ export const clearAuthToken = (): void => { localStorage.removeItem(AUTH_TOKEN_KEY); }; +/** + * 清除groupId + */ +export const clearGroupId = (): void => { + localStorage.removeItem(GROUP_ID_KEY); +}; + /** * 检查并处理URL中的authToken * 如果URL中有authToken参数,则保存到localStorage并从URL中移除 */ -export const handleAuthTokenFromUrl = (): void => { +export const handleAuthTokenAndGroupIdFromUrl = (): void => { const tokenFromUrl = getAuthTokenFromUrl(); - if (tokenFromUrl) { + const groupIdFromUrl = getGroupIdFromUrl(); + if (tokenFromUrl && groupIdFromUrl) { saveAuthToken(tokenFromUrl); + saveGroupId(groupIdFromUrl); // 从URL中移除authToken参数 const url = new URL(window.location.href); url.searchParams.delete('authToken'); + url.searchParams.delete('groupId'); window.history.replaceState({}, '', url.toString()); } };