From 8ef853b7912deec1612f908a139f43c8a340167b Mon Sep 17 00:00:00 2001 From: "97694732@qq.com" Date: Wed, 3 Jun 2026 18:01:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D:PSI=E4=B8=8E=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E7=B3=BB=E7=BB=9Ftoken=E4=B8=8D=E4=BA=92=E9=80=9A,?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E9=94=99=E8=AF=AF=E8=87=AA=E5=8A=A8=E7=99=BB?= =?UTF-8?q?=E5=BD=95,=E7=9B=B4=E6=8E=A5=E4=BD=BF=E7=94=A8=E7=A1=AC?= =?UTF-8?q?=E7=BC=96=E7=A0=81PSI=20token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/login/login.vue | 2 -- pages/upload/upload.vue | 18 +++-------- utils/api.js | 71 +++-------------------------------------- 3 files changed, 8 insertions(+), 83 deletions(-) diff --git a/pages/login/login.vue b/pages/login/login.vue index 8f0444b..ad62144 100644 --- a/pages/login/login.vue +++ b/pages/login/login.vue @@ -264,11 +264,9 @@ export default { const data = response.data // 登录成功,保存数据 uni.setStorageSync('token', data.access_token) - uni.setStorageSync('psi_token', data.access_token) uni.setStorageSync('openId', data.openid || '') uni.setStorageSync('userId', data.userId || '') uni.setStorageSync('phoneNumber', data.phoneNumber || this.formData.account) - uni.setStorageSync('remembered_password', this.formData.password) uni.setStorageSync('nickName', data.nickName || '') uni.setStorageSync('lastSubmitTime', Date.now()) uni.setStorageSync('agreedPrivacy', true) diff --git a/pages/upload/upload.vue b/pages/upload/upload.vue index ed4f601..48461bc 100644 --- a/pages/upload/upload.vue +++ b/pages/upload/upload.vue @@ -1137,14 +1137,9 @@ export default { if (errMsg.includes('NEED_LOGIN')) { const displayMsg = errMsg.replace('NEED_LOGIN:', '') uni.showModal({ - title: '登录已过期', + title: '系统提示', content: displayMsg, - confirmText: '去登录', - success: (res) => { - if (res.confirm) { - uni.navigateTo({ url: '/pages/login/login' }) - } - } + showCancel: false }) } } finally { @@ -1184,14 +1179,9 @@ export default { if (errMsg.includes('NEED_LOGIN')) { const displayMsg = errMsg.replace('NEED_LOGIN:', '') uni.showModal({ - title: '登录已过期', + title: '系统提示', content: displayMsg, - confirmText: '去登录', - success: (res) => { - if (res.confirm) { - uni.navigateTo({ url: '/pages/login/login' }) - } - } + showCancel: false }) } this.popupLocationList = this.popupAllLocationList diff --git a/utils/api.js b/utils/api.js index ce79999..0296ad6 100644 --- a/utils/api.js +++ b/utils/api.js @@ -136,85 +136,22 @@ function generateSimpleSignedUrl(baseUrl, params = {}) { } /** - * 获取token(优先从登录缓存获取,失败时尝试自动登录) + * 获取PSI系统专用token(硬编码,PSI与业务系统token不互通) */ function getAuthToken() { - // 从登录页存储获取 - const token = uni.getStorageSync('token') - if (token) return token - // PSI专用key - const psiToken = uni.getStorageSync('psi_token') - if (psiToken) return psiToken - // 硬编码备用 return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6Miwicm9sZSI6MjU1LCJ1c2VybmFtZSI6IjE4OTA0MDU2ODAwIiwiYWJvdXRfaWQiOjE5NjUyNTQ3NzQzMjc1MzM1NzAsImlzcyI6InBzaS1zeXN0ZW0iLCJleHAiOjE3ODA1NjY0NTYsIm5iZiI6MTc4MDQ4MDA1NiwiaWF0IjoxNzgwNDgwMDU2fQ.yWTRso0ps-z64iA7nSKK4t3EYOy54CYoLtATyzFxrqI' } /** - * 尝试自动登录PSI,返回新token或null - */ -function autoPsiLogin() { - return new Promise((resolve) => { - const phone = uni.getStorageSync('phoneNumber') || '' - const password = uni.getStorageSync('remembered_password') || '' - if (!phone || !password) { - resolve(null) - return - } - console.log('【PSI自动登录】尝试使用存储账号', phone) - uni.request({ - url: 'https://api.buzhiyushu.cn/auth/interFaceLogin', - method: 'POST', - header: { - 'Content-Type': 'application/x-www-form-urlencoded', - 'Authorization': 'Basic ZWxhc3RpYzo1bVJESVVnNTJWQzBmcDE0bnctRg==' - }, - data: { - clientId: 'cec96a240989d1c6bcd55f86fca702b7', - phoneNumber: phone, - password: password - }, - success: (res) => { - const data = res.data - if (data && data.code === 200 && data.data && data.data.access_token) { - const newToken = data.data.access_token - console.log('【PSI自动登录】成功') - uni.setStorageSync('token', newToken) - uni.setStorageSync('psi_token', newToken) - resolve(newToken) - } else { - console.error('【PSI自动登录】失败:', JSON.stringify(data)) - resolve(null) - } - }, - fail: (err) => { - console.error('【PSI自动登录】网络错误:', JSON.stringify(err)) - resolve(null) - } - }) - }) -} - -/** - * 带自动登录重试的PSI API请求 - * @param {Function} requestFn - 实际发起请求的函数,接收token,返回Promise<响应数据> - * @param {string} apiName - 接口名称(用于日志) + * 带错误提示的PSI API请求(401时弹窗跳转登录页) */ function requestWithRetry(requestFn, apiName) { return requestFn(getAuthToken()).catch((err) => { const errMsg = err.message || String(err) - // 只有401/无效令牌才尝试自动登录 + console.error(`【${apiName}】请求失败:`, errMsg) if (errMsg.includes('401') || errMsg.includes('无效的认证令牌')) { - console.log(`【${apiName}】令牌无效,尝试自动登录`) - return autoPsiLogin().then((newToken) => { - if (newToken) { - // 使用新token重试一次 - return requestFn(newToken) - } - // 自动登录失败,抛出需要跳转登录页的错误 - throw new Error('NEED_LOGIN:登录已过期,请重新登录') - }) + throw new Error('NEED_LOGIN:PSI系统登录已过期,请联系管理员') } - // 其他错误 throw err }) }