5.34禁用 Access Token 自动管理
创建于 2026 年 8 月 17 日约 2 分钟读完
框架内置了 Access Token 自动管理功能,只需实现 IHttpAccessTokenProvider 接口,并在 GetAsync 方法中编写获取 Access Token 的逻辑即可。通常情况下,获取 Access Token 需要借助独立的 HTTP 请求,而若在 GetAsync 内部直接使用 IHttpRemoteService 发送请求,则会因触发自动管理机制而陷入递归死循环。此时,需通过标记 [SuppressTokenManagement] 特性显式禁用当前请求的 Access Token 自动管理,避免循环调用。
public class CustomHttpAccessTokenProvider(IHttpBaseService httpBaseService): IHttpAccessTokenProvider{ /// <inheritdoc /> public async Task<HttpAccessToken?> GetAsync(CancellationToken cancellationToken) { var serverToken = await httpBaseService.LoginAsync(new { username = "furion", password = "your-password"}); return new HttpAccessToken(serverToken.Token, serverToken.ExpiresAt) };}HTTP 声明式请求通过 SuppressTokenManagementAttribute 特性来禁用框架的 Access Token 自动管理。相应的 HTTP 声明式提取器实现为 SuppressTokenManagementDeclarativeExtractor 类型,该类型负责解析 SuppressTokenManagementAttribute 特性并构建 HttpRequestBuilder 实例所需的禁用框架的 Access Token 自动管理配置。
public interface IHttpService : IHttpDeclarative{ [Get("https://furion.net/")] [SuppressTokenManagement] // 跳过 Token 管理,避免递归调用 Task<YourServerToken> LoginAsync(object auth); [Get("https://furion.net/")] Task<YourModel>> GetAsync(); // 无需标记}若需对特定请求禁用该功能,可设置 [JsonResponseStringUnwrap(false)] 特性。
SuppressTokenManagementAttribute 包含以下构造函数和属性:
无。