Token认证拦截器
策略类型
拦截器
在使用扩展 hooks 前,确保你已熟悉了 alova 的基本使用。
Token 认证拦截器,对基于 token 的 登录、登出、token 附带、token 刷新进行统一管理,并支持无感刷新 token。
特性
- 统一维护 Token 身份认证的所有代码,包括登录、登出、token 附带、token 刷新等;
- 支持在客户端和服务端验证 token 过期,并无感刷新 token;
- 依赖 token 的请求自动等待 token 刷新完成再请求;
- 使用元数据设置请求身份;
- 自动放行不依赖 token 的访客请求;
绑定 Token 认证拦截器
Token 身份认证是通过全局的拦截器完成的,分别提供了createClientTokenAuthentication
和createServerTokenAuthentication
用于基于客户端和服务端的身份认证。
- 基于客户端的身份认证:表示从客户端判断 token 是否过期,例如在登录时获取到的 token 过期时间;
- 基于服务端的身份认证:表示从服务端返回的状态判断 token 是否过期,例如
status
为 401 时表示过期;
绑定基于客户端的身份认证的拦截器
import { createClientTokenAuthentication } from 'alova/client';
import { createAlova } from 'alova';
const { onAuthRequired, onResponseRefreshToken } = createClientTokenAuthentication({
// ...
});
const alovaInstance = createAlova({
// ...
beforeRequest: onAuthRequired(method => {
// ...原请求前拦截器
}),
responded: onResponseRefreshToken((response, method) => {
//...原响应成功拦截器
return response.json();
})
});