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() +}