Skip to content

鉴权 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

贡献者 ☘️ ​

Flame-00

Flame-00

Creator