新闻中心

Blazor HttpClient 附加 JWT Token 的方法

2025-12-14
浏览次数:
返回列表
最推荐的方式是使用自定义 DelegatingHandler(如 AuthorizationMessageHandler)配合 IJSRuntime 读取 localStorage 中的 JWT Token 并自动添加到 Authorization 请求头,再通过 Program.cs 正确注册命名 HttpClient 并注入该 handler,实现一次配置、全局生效。

blazor httpclient 附加 jwt token 的方法

在 Blazor(尤其是 Blazor WebAssembly)中,为 HttpClient 自动附加 JWT Token 最常用、最推荐的方式是使用 自定义 DelegatingHandler,配合 IJSRuntime 读取本地存储的 token(如 localStorage),再注入到每个请求的 Authorization 头中。

1. 创建带 Token 的 HttpClient Handler

新建一个继承自 DelegatingHandler 的类,例如 AuthorizationMessageHandler

public class AuthorizationMessageHandler : DelegatingHandler
{
    private readonly IJSRuntime _jsRuntime;

    public AuthorizationMessageHandler(IJSRuntime jsRuntime)
    {
        _jsRuntime = jsRuntime;
    }

    protected override async Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request, CancellationToken cancellationToken)
    {
        var token = await _jsRuntime.InvokeAsync<string>("localStorage.getItem", "authToken");
        if (!string.IsNullOrEmpty(token))
        {
            request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
        }
        return await base.SendAsync(request, cancellationToken);
    }
}

这个 handler 会在每次 HTTP 请求发出前,从浏览器 localStorage 中读取 token 并添加到请求头。

2. 在 Program.cs 中注册并配置 HttpClient

在 Blazor WebAssembly 的 Program.cs 中,注册该 handler,并将其注入到命名的 HttpClient

builder.Services.AddScoped<AuthorizationMessageHandler>();
builder.Services.AddHttpClient<IApiService, ApiService>()
    .AddHttpMessageHandler<AuthorizationMessageHandler>()
    .ConfigureHttpClient(client =>
    {
        client.BaseAddress = new Uri(builder.HostEnvironment.BaseAddress);
    });

注意:不要直接注册无名的 HttpClient(如 AddHttpClient<httpclient></httpclient>),否则可能干扰框架默认客户端;推荐为 API 服务创建专用接口+实现,或使用命名客户端。

美图AI开放平台 美图AI开放平台

美图推出的AI人脸图像处理平台

美图AI开放平台 111 查看详情 美图AI开放平台

3. Token 存储与刷新时机要匹配

确保 token 已正确存入 localStorage,且在登录成功后及时写入:

  • 登录成功后调用 JS: await jsRuntime.InvokeVoidAsync("localStorage.setItem", "authToken", token);
  • 登出时务必清除:await jsRuntime.InvokeVoidAsync("localStorage.removeItem", "authToken");
  • 若 token 有过期时间,可在 AuthorizationMessageHandler 中加一层校验(比如解析 JWT payload 判断 exp),但更推荐由上层逻辑统一管理 token 刷新流程

4. 可选:支持多租户或动态 BaseAddress 场景

如果应用需对接多个 API 域名,可扩展 handler 构造函数,传入作用域标识或配置项,再按需决定是否附加 token 或附加到哪个请求:

  • 通过 Named HttpClient 分离不同 API 客户端
  • 在 handler 中检查 request.RequestUri.Host,只对特定域名附加 token
  • 避免把敏感 token 泄露到不信任的第三方接口

基本上就这些。核心是 handler + localStorage + 正确注册顺序。不需要手动在每个 service 方法里加 header,也不依赖组件生命周期——真正做到了“一次配置,全局生效”。

以上就是Blazor HttpClient 附加 JWT Token 的方法的详细内容,更多请关注其它相关文章!


# 浏览器  # ai  # 作用域  # 美图  # 客户端  # js  # 张槎seo优化咨询  # 江门新闻发布seo推广报价  # seo2技术  # 黄石seo站内优化服务  # 小吃外卖推广营销方案  # 延庆区通用网站建设配置  # seo引擎优化平台加盟  # 营销策略推广猎头怎么做  # 唯品会营销推广  # 句容网站建设美丽图片  # 多个  # 尤其是  # 序列化  # 也不  # 操作指南  # 如何将  # 里加  # 自定义 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: iCloud登录入口网页版 苹果iCloud官网登录  生成rdflib自定义SPARQL函数:参数匹配与实践指南  Win10如何恢复误删的快捷方式_Win10重建常用软件快捷方式  Adobe PDF表单中利用J*aScript解析与格式化日期组件的教程  钉钉视频会议声音异常如何处理 钉钉会议音频修复技巧  HuggingFaceEmbeddings中向量嵌入维度调整的限制与理解  《明末:渊虚之羽》设计师谈设计角色:那会刚毕业 充满激情  修复二维数组索引越界异常:一维循环到二维坐标的正确映射  excel怎么制作工资条 excel快速生成工资条的方法  Go语言中的*string:深入理解字符串指针  微信客户端如何收红包_微信客户端接收红包使用教程  Python vgamepad库按键模拟:正确使用XUSB_BUTTON常量  KFC早餐时段怎么领特惠代码_KFC早餐订餐优惠代码获取与使用说明  Win10系统服务哪些可以禁用 Win10安全优化服务列表【干货】  实现全屏滚动与导航点:专业教程  在J*a中如何开发简易博客标签推荐系统_博客标签推荐项目实战解析  HTML长属性值处理:表单action路径优化与代码规范应对  Lar*el Form Request中唯一性验证在更新操作中的正确实现  qq游戏网页版直接玩_qq游戏免下载快速入口  J*aScript动态修改指定div内所有a标签样式指南  Sublime Text怎么显示空格和制表符_Sublime显示不可见字符设置  PPT平滑切换怎么做 PPT炫酷“平滑”切换动画制作教程【必学】  ArrayList与LinkedList操作复杂度详解:遍历与修改  2026春节假期时间安排 2026春节假日查询  自定义Bag-of-Words实现:处理带负号的词汇权重  怎么去除衣服上的口红印_生活小妙招教你用酒精轻松擦除  在Pyomo中实现基于变量的条件约束:Big-M方法详解  sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程  Angular响应式表单:实现提交后表单及按钮的禁用与只读化  Log4j Console Appender性能瓶颈与高并发优化策略  lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法  Win10快速启动功能利弊分析 Win10开启或关闭快速启动教程【技巧】  python3时间如何用calendar输出?  C++如何操作注册表_Windows平台下C++读写注册表的API函数详解  Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值  PostgreSQL海量数据高效导入策略:Python与Django实践指南  黑猫投诉统一入口官网 消费者权益保护投诉平台  如何修改开机登录密码_Windows账户安全设置超详细教程【必学】  Win11怎么查看电脑配置_Win11硬件配置检测工具使用  Go RPC HTTP服务正确实现与常见陷阱解析  qq音乐在线播放入口_qq音乐电脑版登录链接  微博网页版怎么开启两步验证_微博网页版账号安全两步验证设置方法  J*aScript中管理异步API调用:确保操作顺序与数据一致性  win11专注助手在哪 Win11免打扰模式设置与自动化规则【指南】  《燕云十六声》两周内达九百万玩家!位居畅销榜第五  QQ邮箱登录首页官网地址2026 QQ邮箱官方网页入口  J*aScript类型检查_j*ascript代码规范  CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色  顺丰快件物流信息 官方网站查询入口  内存疯狂猛猛涨价:主板销量直接腰斩! 

搜索