uni.addInterceptor 拦截401接口
时间: 2025-06-04 19:39:43 浏览: 16
### 使用 `uni.addInterceptor` 拦截 401 状态码
当处理 HTTP 请求时,遇到未授权的状态码(如 401),可以利用拦截器机制来统一处理这些异常情况。通过配置响应拦截器,在接收到特定状态码时执行自定义逻辑。
对于 UniApp 开发环境而言,设置全局错误处理器能够有效增强应用的安全性和用户体验。下面展示一段 JavaScript 实现代码,该代码片段展示了如何捕获并处理来自服务器端返回的 401 错误:
```javascript
// 定义常量存储 Token 的键名
const TOKEN_KEY = 'token';
// 创建函数用于获取本地缓存中的 Token 并附加到请求头中
function handleToken(config) {
const token = uni.getStorageSync(TOKEN_KEY);
if (token) {
config.header.Authorization = `Bearer ${token}`;
}
}
// 添加请求拦截器以自动注入认证信息
uni.addInterceptor('request', {
invoke: function (config) {
handleToken(config);
return config;
},
});
// 同样地为 response 设置拦截器以便于捕捉服务端反馈的信息
uni.addInterceptor('response', {
success: function(response){
// 成功回调不做特殊处理直接放行
return response.data;
},
fail: function(error){
// 如果发生网络层失败则抛出原始 Error 对象供上层调用者决定后续动作
throw error;
},
complete: function(res){
// 不论成功与否都会触发此钩子函数
let statusCode = res.statusCode || '';
switch(statusCode){
case 401:
console.warn('Unauthorized access detected');
// 清除过期或无效令牌
uni.removeStorage({key:TOKEN_KEY});
// 可选操作:重定向至登录页面或其他适当位置
uni.reLaunch({
url:'/pages/login/index'
});
break;
default:
// 非 401 场景下的默认行为
break;
}
return res;
}
});
```
上述脚本不仅实现了对接口请求前添加身份验证的功能[^2],同时也针对可能出现的身份验证失效进行了妥善管理。每当检测到 401 响应码时,会清除当前用户的访问令牌,并提示用户重新登录。
#### 注意事项
- 此处假设使用的是 Bearer 类型的 OAuth 2.0 访问令牌。
- 当实际项目中有不同的鉴权方式时,请相应调整 `handleToken()` 函数内的实现细节。
- 应考虑更复杂的场景,例如刷新令牌流程等高级功能扩展。
阅读全文
相关推荐

















