From f1c12a974c0b8adea62acbd24d3abb13aca9b4ee Mon Sep 17 00:00:00 2001 From: Leo <98382335+gaoziman@users.noreply.github.com> Date: Mon, 13 Oct 2025 21:34:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E5=AE=88=E5=8D=AB=E5=B7=A5=E5=85=B7=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 创建authGuard.ts工具模块 - 实现requireAuth函数用于主动检查用户登录状态 - 未登录时显示友好提示并自动跳转到登录页 - 实现isAuthenticated函数用于静默检查登录状态 --- src/utils/authGuard.ts | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/utils/authGuard.ts diff --git a/src/utils/authGuard.ts b/src/utils/authGuard.ts new file mode 100644 index 0000000..007417f --- /dev/null +++ b/src/utils/authGuard.ts @@ -0,0 +1,38 @@ +/** + * 认证守卫工具 + * 用于在执行需要登录的操作前检查用户认证状态 + */ + +import { message } from 'antd' +import { getToken } from './request' + +/** + * 检查用户是否已登录 + * 如果未登录,显示提示信息并跳转到登录页 + * @param actionName 操作名称,用于提示信息(如"点赞"、"收藏"等) + * @returns 是否已登录(true=已登录,false=未登录) + */ +export const requireAuth = (actionName: string = '此操作'): boolean => { + const token = getToken() + + if (!token) { + message.warning(`${actionName}需要登录,请先登录`) + + // 延迟跳转,让用户看到提示信息 + setTimeout(() => { + window.location.href = '/login' + }, 800) + + return false + } + + return true +} + +/** + * 检查用户是否已登录(不显示提示,静默检查) + * @returns 是否已登录 + */ +export const isAuthenticated = (): boolean => { + return !!getToken() +}