修复:PSI与业务系统token不互通,移除错误自动登录,直接使用硬编码PSI token
This commit is contained in:
parent
2a16d11474
commit
8ef853b791
@ -264,11 +264,9 @@ export default {
|
|||||||
const data = response.data
|
const data = response.data
|
||||||
// 登录成功,保存数据
|
// 登录成功,保存数据
|
||||||
uni.setStorageSync('token', data.access_token)
|
uni.setStorageSync('token', data.access_token)
|
||||||
uni.setStorageSync('psi_token', data.access_token)
|
|
||||||
uni.setStorageSync('openId', data.openid || '')
|
uni.setStorageSync('openId', data.openid || '')
|
||||||
uni.setStorageSync('userId', data.userId || '')
|
uni.setStorageSync('userId', data.userId || '')
|
||||||
uni.setStorageSync('phoneNumber', data.phoneNumber || this.formData.account)
|
uni.setStorageSync('phoneNumber', data.phoneNumber || this.formData.account)
|
||||||
uni.setStorageSync('remembered_password', this.formData.password)
|
|
||||||
uni.setStorageSync('nickName', data.nickName || '')
|
uni.setStorageSync('nickName', data.nickName || '')
|
||||||
uni.setStorageSync('lastSubmitTime', Date.now())
|
uni.setStorageSync('lastSubmitTime', Date.now())
|
||||||
uni.setStorageSync('agreedPrivacy', true)
|
uni.setStorageSync('agreedPrivacy', true)
|
||||||
|
|||||||
@ -1137,14 +1137,9 @@ export default {
|
|||||||
if (errMsg.includes('NEED_LOGIN')) {
|
if (errMsg.includes('NEED_LOGIN')) {
|
||||||
const displayMsg = errMsg.replace('NEED_LOGIN:', '')
|
const displayMsg = errMsg.replace('NEED_LOGIN:', '')
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: '登录已过期',
|
title: '系统提示',
|
||||||
content: displayMsg,
|
content: displayMsg,
|
||||||
confirmText: '去登录',
|
showCancel: false
|
||||||
success: (res) => {
|
|
||||||
if (res.confirm) {
|
|
||||||
uni.navigateTo({ url: '/pages/login/login' })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
@ -1184,14 +1179,9 @@ export default {
|
|||||||
if (errMsg.includes('NEED_LOGIN')) {
|
if (errMsg.includes('NEED_LOGIN')) {
|
||||||
const displayMsg = errMsg.replace('NEED_LOGIN:', '')
|
const displayMsg = errMsg.replace('NEED_LOGIN:', '')
|
||||||
uni.showModal({
|
uni.showModal({
|
||||||
title: '登录已过期',
|
title: '系统提示',
|
||||||
content: displayMsg,
|
content: displayMsg,
|
||||||
confirmText: '去登录',
|
showCancel: false
|
||||||
success: (res) => {
|
|
||||||
if (res.confirm) {
|
|
||||||
uni.navigateTo({ url: '/pages/login/login' })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
this.popupLocationList = this.popupAllLocationList
|
this.popupLocationList = this.popupAllLocationList
|
||||||
|
|||||||
71
utils/api.js
71
utils/api.js
@ -136,85 +136,22 @@ function generateSimpleSignedUrl(baseUrl, params = {}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取token(优先从登录缓存获取,失败时尝试自动登录)
|
* 获取PSI系统专用token(硬编码,PSI与业务系统token不互通)
|
||||||
*/
|
*/
|
||||||
function getAuthToken() {
|
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'
|
return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6Miwicm9sZSI6MjU1LCJ1c2VybmFtZSI6IjE4OTA0MDU2ODAwIiwiYWJvdXRfaWQiOjE5NjUyNTQ3NzQzMjc1MzM1NzAsImlzcyI6InBzaS1zeXN0ZW0iLCJleHAiOjE3ODA1NjY0NTYsIm5iZiI6MTc4MDQ4MDA1NiwiaWF0IjoxNzgwNDgwMDU2fQ.yWTRso0ps-z64iA7nSKK4t3EYOy54CYoLtATyzFxrqI'
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 尝试自动登录PSI,返回新token或null
|
* 带错误提示的PSI API请求(401时弹窗跳转登录页)
|
||||||
*/
|
|
||||||
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 - 接口名称(用于日志)
|
|
||||||
*/
|
*/
|
||||||
function requestWithRetry(requestFn, apiName) {
|
function requestWithRetry(requestFn, apiName) {
|
||||||
return requestFn(getAuthToken()).catch((err) => {
|
return requestFn(getAuthToken()).catch((err) => {
|
||||||
const errMsg = err.message || String(err)
|
const errMsg = err.message || String(err)
|
||||||
// 只有401/无效令牌才尝试自动登录
|
console.error(`【${apiName}】请求失败:`, errMsg)
|
||||||
if (errMsg.includes('401') || errMsg.includes('无效的认证令牌')) {
|
if (errMsg.includes('401') || errMsg.includes('无效的认证令牌')) {
|
||||||
console.log(`【${apiName}】令牌无效,尝试自动登录`)
|
throw new Error('NEED_LOGIN:PSI系统登录已过期,请联系管理员')
|
||||||
return autoPsiLogin().then((newToken) => {
|
|
||||||
if (newToken) {
|
|
||||||
// 使用新token重试一次
|
|
||||||
return requestFn(newToken)
|
|
||||||
}
|
|
||||||
// 自动登录失败,抛出需要跳转登录页的错误
|
|
||||||
throw new Error('NEED_LOGIN:登录已过期,请重新登录')
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
// 其他错误
|
|
||||||
throw err
|
throw err
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user