角色 保存
This commit is contained in:
@@ -44,13 +44,14 @@ function isLoginApi(url) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置全局 uni.request 拦截器,自动添加 X-Tenant-Id header
|
||||
* 设置全局 uni.request 拦截器,自动添加 X-Tenant-Id header 和 Authorization token
|
||||
* 确保每次请求后端都携带 token 进行身份验证
|
||||
*/
|
||||
function setupRequestInterceptor() {
|
||||
// 保存原始的 uni.request
|
||||
const originalRequest = uni.request
|
||||
|
||||
// 重写 uni.request,自动添加 tenantId
|
||||
// 重写 uni.request,自动添加 tenantId 和 token
|
||||
uni.request = function(options = {}) {
|
||||
const { url, header = {}, method = 'GET', ...restOptions } = options
|
||||
|
||||
@@ -81,18 +82,37 @@ function setupRequestInterceptor() {
|
||||
newHeader['X-Tenant-Id'] = tenantId
|
||||
}
|
||||
|
||||
// 添加 token(如果存在且未设置)
|
||||
if (!newHeader['Authorization']) {
|
||||
// 每次请求都自动添加 token(登录接口除外)
|
||||
// 全局拦截器确保所有通过 uni.request 的请求都携带 token
|
||||
if (!isLoginApi(url)) {
|
||||
try {
|
||||
const token = uni.getStorageSync('backend-token') || ''
|
||||
if (token) {
|
||||
// 每次请求都添加 token 到 Authorization header
|
||||
newHeader['Authorization'] = `Bearer ${token}`
|
||||
} else {
|
||||
// 如果没有 token,移除可能存在的旧 Authorization header
|
||||
delete newHeader['Authorization']
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('获取 token 失败:', e)
|
||||
}
|
||||
}
|
||||
|
||||
// 添加 roleName 和 scenario 到 header(从登录响应中获取)
|
||||
try {
|
||||
const roleName = uni.getStorageSync('backend-role-name') || ''
|
||||
if (roleName) {
|
||||
newHeader['X-Role-Name'] = roleName
|
||||
}
|
||||
const scenario = uni.getStorageSync('backend-scenario') || ''
|
||||
if (scenario) {
|
||||
newHeader['X-Scenario'] = scenario
|
||||
}
|
||||
} catch (e) {
|
||||
console.error('获取 roleName 或 scenario 失败:', e)
|
||||
}
|
||||
|
||||
// 统一使用 Promise 方式,确保正确返回响应
|
||||
// 这样无论调用方使用 await 还是回调,都能正常工作
|
||||
return new Promise((resolve, reject) => {
|
||||
@@ -132,7 +152,7 @@ function setupRequestInterceptor() {
|
||||
})
|
||||
}
|
||||
|
||||
// 全局请求拦截器已设置,所有 uni.request 调用将自动添加 X-Tenant-Id header
|
||||
// 全局请求拦截器已设置,所有 uni.request 调用将自动添加 X-Tenant-Id header 和 Authorization token
|
||||
}
|
||||
|
||||
export default async function() {
|
||||
|
||||
Reference in New Issue
Block a user