diff --git a/miniprogram/src/utils/api.js b/miniprogram/src/utils/api.js index 1c98ddc..e29e3bf 100644 --- a/miniprogram/src/utils/api.js +++ b/miniprogram/src/utils/api.js @@ -27,6 +27,10 @@ export function request(method, path, data = {}, withAuth = false) { const d = res.data || {}; if (res.statusCode >= 200 && res.statusCode < 300 && d.ok !== false) { resolve(d); + } else if (res.statusCode === 401) { + // 登录已失效(token 过期/被吊销/token_version 变更):清掉假登录态,引导重新登录 + Taro.removeStorageSync('pine_token'); + reject(new Error('登录已过期,请重新登录')); } else { reject(new Error(d.detail || d.error || '请求失败,请稍后重试')); } diff --git a/miniprogram/src/utils/auth.js b/miniprogram/src/utils/auth.js index 515b976..e5d5250 100644 --- a/miniprogram/src/utils/auth.js +++ b/miniprogram/src/utils/auth.js @@ -1,8 +1,7 @@ import Taro from '@tarojs/taro'; import { request } from './api'; -/* 用户端认证(统一账号):登录/资料走平台 /auth(单一 users + 平台 JWT); - 手机绑定走培训 /api/auth(阶段3 后同样读写平台 users + 验平台 JWT)。 +/* 用户端认证(统一账号):登录/资料/手机绑定均走平台 /auth(单一 users + 平台 JWT)。 与 web 端一致,见 小程序同步约束.md */ /** pine_user 契约字段(各页面读取):username/name/avatar/phone/phoneBound/status/topics/source */ @@ -103,7 +102,7 @@ export async function bindPhone(phone, code) { const data = await request('POST', '/auth/bind-phone', { phone, code }, true); if (data.token) { Taro.setStorageSync('pine_token', data.token); - Taro.setStorageSync('pine_user', JSON.stringify(pickUser(data))); + saveUser(data); // pine_user 统一存对象(此前误存 JSON 字符串致资料页字段丢失) } return { ok: true, phone, phoneBound: true, ...data }; } diff --git a/website/public/logo.png b/website/public/logo.png index 60a9890..32668b9 100644 Binary files a/website/public/logo.png and b/website/public/logo.png differ