request修改
This commit is contained in:
1 parent
c2a765ebf7
commit
d2e7f4bf7a
2 files changed
+9
-17
No files matched your search
@@ -7,10 +7,10 @@ const showVerifyDeviceImpModel = (onClose: () => any = () => null) => {
|
|||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
if (VerifyDeviceImpModelInstance) return
|
if (VerifyDeviceImpModelInstance) return
|
||||||
|
|
||||||
const close = () => {
|
const close = async () => {
|
||||||
render(null, document.body)
|
render(null, document.body)
|
||||||
VerifyDeviceImpModelInstance = false
|
VerifyDeviceImpModelInstance = false
|
||||||
onClose()
|
await onClose()
|
||||||
}
|
}
|
||||||
|
|
||||||
const vnode = h(VerifyDeviceImpModel, {
|
const vnode = h(VerifyDeviceImpModel, {
|
||||||
|
|||||||
@@ -10,9 +10,8 @@ const TOKEN_KEY = constant.storageConstant.TOKEN
|
|||||||
const USER_INFO_KEY = constant.storageConstant.USERINFO
|
const USER_INFO_KEY = constant.storageConstant.USERINFO
|
||||||
const SKIP_AUTH_URLS = ["/thirdparty/thirdPartyOAth2", "/sys/auth/refresh-token", "/auth/oauth2/token"]
|
const SKIP_AUTH_URLS = ["/thirdparty/thirdPartyOAth2", "/sys/auth/refresh-token", "/auth/oauth2/token"]
|
||||||
|
|
||||||
// 是否正在刷新token
|
|
||||||
let isRefreshing = false
|
let isRefreshing = false
|
||||||
// 定义一个队列,用于存储失败的请求
|
// 队列存储发送失败的请求
|
||||||
let failedQueue: any[] = []
|
let failedQueue: any[] = []
|
||||||
// 存储刷新token的Promise
|
// 存储刷新token的Promise
|
||||||
let refreshTokenPromise: Promise<any> | null = null
|
let refreshTokenPromise: Promise<any> | null = null
|
||||||
@@ -42,7 +41,7 @@ const getAuthHeader = (tokenStorage: any) => {
|
|||||||
// 浙政钉登录 登录成功返回true,否则返回false
|
// 浙政钉登录 登录成功返回true,否则返回false
|
||||||
async function handleZzdLogin(): Promise<boolean> {
|
async function handleZzdLogin(): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
uni.showLoading({ title: "加载中...", mask: true })
|
uni.showLoading({ title: "登录中...", mask: true })
|
||||||
const token = new URL(window.location.href).searchParams.get("uabaseToken")
|
const token = new URL(window.location.href).searchParams.get("uabaseToken")
|
||||||
|
|
||||||
if (!token) {
|
if (!token) {
|
||||||
@@ -104,7 +103,7 @@ async function handleShLogin(): Promise<boolean> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 如果是设备未验证,保存响应数据
|
// 如果是设备未验证,保存响应数据
|
||||||
if (response.data === -1) {
|
if (response.data == -1) {
|
||||||
uni.setStorageSync(TOKEN_KEY, { data: -1 })
|
uni.setStorageSync(TOKEN_KEY, { data: -1 })
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -136,7 +135,7 @@ async function autoLogin(): Promise<boolean> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 统一的token刷新函数
|
// token刷新
|
||||||
async function refreshToken(): Promise<any> {
|
async function refreshToken(): Promise<any> {
|
||||||
if (refreshTokenPromise) {
|
if (refreshTokenPromise) {
|
||||||
return refreshTokenPromise
|
return refreshTokenPromise
|
||||||
@@ -154,7 +153,7 @@ async function refreshToken(): Promise<any> {
|
|||||||
} else {
|
} else {
|
||||||
// 检查是否需要设备验证
|
// 检查是否需要设备验证
|
||||||
const tokenStorage = uni.getStorageSync(TOKEN_KEY)
|
const tokenStorage = uni.getStorageSync(TOKEN_KEY)
|
||||||
if (tokenStorage?.data === -1) {
|
if (tokenStorage?.data == -1) {
|
||||||
// 显示设备验证弹窗
|
// 显示设备验证弹窗
|
||||||
await showVerifyDeviceImpModel(async () => {
|
await showVerifyDeviceImpModel(async () => {
|
||||||
// 验证完成后重新登录
|
// 验证完成后重新登录
|
||||||
@@ -221,8 +220,6 @@ const http = new Request({
|
|||||||
|
|
||||||
// 请求拦截器
|
// 请求拦截器
|
||||||
http.interceptors.request.use(async (config) => {
|
http.interceptors.request.use(async (config) => {
|
||||||
// console.log("config", config)
|
|
||||||
|
|
||||||
const tokenStorage = uni.getStorageSync(TOKEN_KEY)
|
const tokenStorage = uni.getStorageSync(TOKEN_KEY)
|
||||||
const config_header: any = config.header || {}
|
const config_header: any = config.header || {}
|
||||||
|
|
||||||
@@ -243,7 +240,7 @@ http.interceptors.request.use(async (config) => {
|
|||||||
if (authHeader) config_header.Authorization = authHeader
|
if (authHeader) config_header.Authorization = authHeader
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// token不存在,使用统一的刷新函数
|
// token不存在,刷新token
|
||||||
const newTokenStorage = await refreshToken()
|
const newTokenStorage = await refreshToken()
|
||||||
if (newTokenStorage) {
|
if (newTokenStorage) {
|
||||||
const authHeader = getAuthHeader(newTokenStorage)
|
const authHeader = getAuthHeader(newTokenStorage)
|
||||||
@@ -258,8 +255,6 @@ http.interceptors.request.use(async (config) => {
|
|||||||
// 响应拦截器
|
// 响应拦截器
|
||||||
http.interceptors.response.use(
|
http.interceptors.response.use(
|
||||||
async (response) => {
|
async (response) => {
|
||||||
// console.log("response", response)
|
|
||||||
|
|
||||||
// 账号密码登录响应结果特殊处理
|
// 账号密码登录响应结果特殊处理
|
||||||
if (response.config.url === "/auth/oauth2/token") {
|
if (response.config.url === "/auth/oauth2/token") {
|
||||||
return Promise.resolve({
|
return Promise.resolve({
|
||||||
@@ -272,8 +267,6 @@ http.interceptors.response.use(
|
|||||||
return Promise.resolve(response.data)
|
return Promise.resolve(response.data)
|
||||||
},
|
},
|
||||||
async (error) => {
|
async (error) => {
|
||||||
// console.log("error", error)
|
|
||||||
|
|
||||||
// 处理 424 错误(token过期)
|
// 处理 424 错误(token过期)
|
||||||
if (error.statusCode === 424) {
|
if (error.statusCode === 424) {
|
||||||
if (isDevEnv()) {
|
if (isDevEnv()) {
|
||||||
@@ -284,7 +277,6 @@ http.interceptors.response.use(
|
|||||||
router.jump("/pages/test/login")
|
router.jump("/pages/test/login")
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
// 使用统一的刷新函数
|
|
||||||
const newTokenStorage = await refreshToken()
|
const newTokenStorage = await refreshToken()
|
||||||
if (newTokenStorage) {
|
if (newTokenStorage) {
|
||||||
// 重新发起失败的请求
|
// 重新发起失败的请求
|
||||||
@@ -294,7 +286,7 @@ http.interceptors.response.use(
|
|||||||
return http.request(config)
|
return http.request(config)
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
// 错误已经在refreshToken中处理
|
// 错误已在refreshToken中处理
|
||||||
return Promise.reject(err)
|
return Promise.reject(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user