鉴权 Token 刷新
请求返回 401 时,useRequest 可以自动刷新 Token 并重放原请求。该能力由内置插件 useAuthRefreshPlugin 提供,配置 isUnauthorized、refreshToken、onUnauthorized 三个选项即可启用。
基本使用
isUnauthorized 由你决定如何识别未授权错误,不依赖任何请求库。只要错误对象能拿到 401 状态即可:
ts
const isUnauthorized = (error: unknown) =>
(error as { status?: number } | null)?.status === 401;
const { data, loading } = useRequest(getOrders, {
isUnauthorized,
refreshToken: authStore.refreshToken,
onUnauthorized: () => {
authStore.clearAuth();
router.push("/login");
},
});多个请求同时收到 401 时只会刷新一次 Token,其余请求等待刷新完成后重放;刷新失败或重放后仍 401 会触发 onUnauthorized。刷新与重放都在 onRequest 内完成,用户只会看到一次 loading → 成功。
Options
| 参数 | 说明 | 类型 |
|---|---|---|
| isUnauthorized | 判断错误是否属于「未授权 / 401」,返回 true 才触发刷新 | (error: unknown) => boolean |
| refreshToken | 刷新 Token 的函数,成功 resolve、失败 reject | () => Promise<unknown> |
| onUnauthorized | 刷新失败或重放后仍 401 时触发,用于清理登录态并跳转登录页 | (error: unknown, refreshError?: unknown) => void |