From 6d8487a11f1fa4082373e209b4877918d1af90f6 Mon Sep 17 00:00:00 2001 From: doublex001 <16157008+doublex001@user.noreply.gitee.com> Date: Wed, 30 Sep 2026 14:48:08 +0800 Subject: [PATCH] =?UTF-8?q?refactor(auth):=20=E9=89=B4=E6=9D=83=E5=9F=9F?= =?UTF-8?q?=E6=95=B4=E4=BD=93=E7=A1=AC=E5=88=87=E7=9C=9F=E5=AE=9E=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=EF=BC=8C=E7=A7=BB=E9=99=A4=20mock=20=E5=88=86?= =?UTF-8?q?=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - sendSmsCode / loginByPassword / loginBySms / fetchCurrentUser 等不再受全局 isMockMode() 控制,永远走真实接口;mockAuthTokens 辅助函数随之删除 - 鉴权链路(短信、/auth/login、/auth/me、/auth/refresh、/auth/logout、 /auth/identity/select、/auth/company/register)均已实网验证 - sendSmsCode 失败改为向上抛出,由 useSmsCode 在页面提示(原先静默返回会 让用户以为验证码已发出) - 业务域未接通部分仍按 isMockMode 兜底 mock,行为不变 --- src/api/auth.ts | 76 ++++++------------------------------------------- 1 file changed, 9 insertions(+), 67 deletions(-) diff --git a/src/api/auth.ts b/src/api/auth.ts index d9f3748..650763c 100644 --- a/src/api/auth.ts +++ b/src/api/auth.ts @@ -1,9 +1,15 @@ -import { request, isMockMode, toExpiresAt } from './http'; +import { request, toExpiresAt } from './http'; import type { AppRole } from '../types'; -/* ===================== 鉴权接口(真实后端) ===================== +/* ===================== 鉴权接口(真实后端 · 不走 mock) ===================== * 落实规范第 4、5、6 节。全部走 http 层;匿名接口显式 auth:false。 * 客户端不提交 role / userId / verified / passwordHash(后端生成)。 + * + * 鉴权域已整体切真实后端(2026-09-30):短信网关、/auth/login、/auth/me、 + * /auth/refresh、/auth/logout、/auth/identity/select、/auth/company/register + * 均已接通。本文件函数不再受全局 isMockMode() 控制,永远走真实接口; + * 业务域(api.ts 内未接通的接口)仍按 isMockMode 兜底 mock。 + * 故 mockAuthTokens 辅助函数已删除——鉴权域不再有 mock 形态。 */ /** @@ -75,12 +81,11 @@ function isValidPhone(phone: string): boolean { return /^1[3-9]\d{9}$/.test(phone); } -/** 发送短信验证码(§4 步骤1 / §6 步骤1) */ +/** 发送短信验证码(§4 步骤1 / §6 步骤1):失败抛出,由 useSmsCode 在页面提示 */ export async function sendSmsCode(payload: SmsSendPayload): Promise { if (!isValidPhone(payload.phone)) { throw new Error('手机号格式不正确'); } - if (isMockMode()) return; // 后端约束:/auth/sms/send 只接受 Query 参数(body 传参会被当作缺失) await request('/auth/sms/send', { method: 'POST', @@ -99,16 +104,6 @@ export async function loginByPassword(payload: PasswordLoginPayload): Promise { - if (isMockMode()) { - return { - id: 'mock-user', - role: 'candidate', - phone: '', - nickname: 'Mock 用户', - verified: true, - active: true, - }; - } const raw = await request<{ id: number; role: BackendRole; @@ -259,7 +224,6 @@ export async function fetchCurrentUser(): Promise { /** 退出登录(§4 步骤5):前端清会话由 AuthContext 负责,这里只通知后端 */ export async function requestLogout(): Promise { - if (isMockMode()) return; await request('/auth/logout', { method: 'POST' }); } @@ -284,16 +248,6 @@ export async function registerCompany(payload: CompanyRegisterPayload): Promise< if (!isValidPhone(payload.phone)) { throw new Error('手机号格式不正确'); } - if (isMockMode()) { - const mock = mockAuthTokens(`company_${payload.phone}`); - return { - ...mock, - userId: 0, - phone: payload.phone, - nickname: '企业用户', - role: 'COMPANY', - }; - } const raw = await request<{ userId: number; companyId?: number; @@ -320,7 +274,6 @@ export interface RefreshTokenPayload { /** 用 Refresh Token 换取新凭证(旧 Refresh 立即失效) */ export async function refreshAuthToken(payload: RefreshTokenPayload): Promise { - if (isMockMode()) return mockAuthTokens('refreshed'); const raw = await request<{ accessToken: string; refreshToken: string; @@ -362,17 +315,6 @@ export interface IdentitySelectionResult extends AuthLoginData { * 首次成功撤销全部旧会话并返回新凭证;同身份重复请求只返回状态,不重复颁发凭证。 */ export async function selectIdentity(payload: IdentitySelectionPayload): Promise { - if (isMockMode()) { - const mock = mockAuthTokens('identity'); - return { - ...mock, - userId: 0, - phone: '', - nickname: 'Mock 用户', - role: payload.identity, - identitySelectionRequired: false, - }; - } const raw = await request<{ userId: number; role: BackendRole;