新闻中心

C# ASP.NET Core中的认证与授权 - JWT Bearer入门

2025-12-04
浏览次数:
返回列表
在ASP.NET Core中实现JWT认证需配置服务、签发Token并验证签名。1. 在Program.cs中通过AddAuthentication().AddJwtBearer()注册JWT支持,设置密钥、ValidIssuer、ValidAudience等参数;2. 登录成功后构建Claim数组,使用JwtSecurityTokenHandler生成带有效期和签名的Token并返回;3. 控制器使用[Authorize]限制访问,未标注则允许匿名;4. 支持角色需Token包含role声明,自定义策略通过AddAuthorization().AddPolicy()定义;5. 前端请求必须携带"Authorization: Bearer "头,格式错误或过期将导致401。整个流程依赖密钥安全与配置一致性。

c# asp.net core中的认证与授权 - jwt bearer入门

在 ASP.NET Core 中实现 JWT Bearer 认证,核心是配置服务、签发 Token、验证签名,并结合授权策略控制访问。不复杂但容易忽略细节。

配置 JWT Bearer 认证服务

Program.cs 中注册认证服务,指定密钥、颁发者、受众等参数,确保与签发 Token 时一致:

  • 使用 AddAuthentication().AddJwtBearer() 添加 JWT 支持
  • 密钥必须是 symmetric security key(如从字符串生成的 SigningCredentials
  • ValidIssuerValidAudience 要和 Token 中的 issaud 字段严格匹配
  • 建议启用 ValidateLifetimeValidateIssuerSigningKey(默认开启)

签发 JWT Token 的基本流程

用户登录成功后,手动创建并返回 Token。关键步骤包括:

  • 构建 ClaimsIdentity 或直接准备 Claim[](如 new Claim(ClaimTypes.Name, "user1")
  • SecurityTokenDescriptor 设置有效期(Expires)、签名凭证、issuer/audience
  • 通过 JwtSecurityTokenHandler 创建并 WriteToken() 输出字符串
  • 通常以 {"token": "xxx"} 形式返回给前端

在控制器中使用 [Authorize] 控制访问

认证通过后,[Authorize] 才能生效。注意几个常见情况:

MedPeer科研绘图 MedPeer科研绘图

生物医学领域的专业绘图解决方案,告别复杂绘图,专注科研创新

MedPeer科研绘图 166 查看详情 MedPeer科研绘图
  • 未加 [Authorize] 的接口默认允许匿名访问
  • 加了但没配置认证方案?会报 401 或 500 —— 检查 AddAuthentication() 是否调用、顺序是否在 UseAuthentication() 之前
  • 想限制特定角色?用 [Authorize(Roles = "Admin")],前提是 Token 中包含 role 声明且名称匹配(如 new Claim(ClaimTypes.Role, "Admin")
  • 自定义策略?用 AddAuthorization().AddPolicy() 配合 [Authorize(Policy = "MyPolicy")]

前端请求记得带 Authorization Header

客户端必须在请求头中提供 Token,格式固定:

  • Authorization: Bearer (注意中间有空格)
  • 大小写敏感:必须是 Bearer,不是 bearerJWT
  • Token 过期或签名无效 → 返回 401;格式错误(如缺空格)→ 可能 401 或静默失败,取决于中间件配置

基本上就这些。JWT 是无状态认证的常用选择,只要密钥安全、时间窗口合理、Claim 设计清晰,就能稳定支撑多数业务场景。

以上就是C# ASP.NET Core中的认证与授权 - JWT Bearer入门的详细内容,更多请关注其它相关文章!


# 中文网  # 安顺营销推广项目有哪些  # 博物馆品牌推广营销  # 重庆主城学校网站建设  # 抖音seo项目怎么操作  # seo网站诊断电话  # 新密网站优化怎么做  # 潍坊网站建设骏域  # 休闲网站推广教程  # 潍坊seo平台  # 外贸推广网站有哪些类型  # 查看详情  # 用户登录  # 解决问题  # c#  # 相关文章  # 就能  # 几个  # 与非  # 会报  # 自定义  # elif  # red  # .net  # ai  # 前端  # jwt 


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


相关推荐: CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色  Surface怎么安装系统 微软Surface Pro U盘重装win11教程  Excel文件在线转换快速入口 Excel在线格式转换网站  c++ 命名空间怎么用 c++ namespace使用指南  vivo手机互传视频怎么操作_vivo手机互传视频详细传输方法  顺丰国际快递查询 国际件官方查询入口  excel如何生成目录 excel一键生成工作表目录超链接  Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理  优化大型XML文件解析:基于Python流式处理的内存高效方案  mcjs网页版流畅运行 mcjs低配电脑畅玩入口  Excel Power Pivot如何处理XML数据源 构建高级数据模型  sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件  修复二维数组索引越界异常:一维循环到二维坐标的正确映射  J*a最大堆Heapify方法修复:索引计算与边界条件深度解析  EMS快递官网app_中国邮政速递物流手机客户端  QQ邮箱电脑版登录入口_QQ邮箱官方网站登录平台  html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】  MAC如何安全彻底地删除文件_MAC使用终端命令确保文件无法被恢复  为什么简单的XML文件也会解析失败? 检查隐藏的非打印字符(如BOM)的方法  反效果?《战地6》免费试玩开启后玩家数不升反降  海棠电脑版入口_通过电脑访问海棠官网阅读  c++如何使用折叠表达式(Fold Expressions)_c++17可变参数模板新技巧  C++的std::mdspan是什么_C++23中用于操作多维数组的非拥有视图  ArrayList与LinkedList操作复杂度详解:遍历与修改  邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策  外媒分析《GTA6》定价:卖100美元可以但真没必要!  抖音极速版最新版本 抖音极速版官方下载地址  天猫2025双十一0点秒杀攻略 天猫爆款抢购时间  AO3网页版合集入口 Archive of Our Own同人作品浏览指南  如何在低配置电脑上搭建轻量级J*a环境_占用更小的环境选择技巧  j*a toString()的覆盖  C++ map遍历方法大全_C++ map迭代器使用总结  C++如何操作注册表_Windows平台下C++读写注册表的API函数详解  J*a 递归快速排序中静态变量的状态管理与陷阱  哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法  利用5118提升短视频内容效果_5118短视频关键词优化方法  Python Socket多播通信中指定源IP地址的实践指南  Golang如何安装Swagger工具_GoSwagger文档生成环境  Android Studio计算器C键功能异常排查与修复教程  Django模型中自动计算可用余额的实现方法  蓝湖怎样用切图标注提对接效率_蓝湖用切图标注提对接效率【设计对接】  html网页设计源代码怎么运行_运行html网页设计源代码步骤【指南】  虚幻5科幻题材ARPG大作遭取消!本是《奇异人生》厂商新作  CSS Flexbox与媒体查询:实现响应式布局中元素的并排与堆叠  包子漫画官方网站在线链接-包子漫画在线阅读平台主页地址  汽水音乐网页版使用入口_汽水音乐电脑版播放指南  mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤  微信客户端如何收红包_微信客户端接收红包使用教程  千牛数据看板网页版_千牛数据看板网页版访问方法  深入理解Go语言中的指针类型:以*string为例 

搜索