当前位置: 首页 > news >正文

.net9.0 JWT AUTH2.0 添加身份认证授权

1、添加 Microsoft.AspNetCore.Authentication.JwtBearer 包(9.0.9)

2、
添加类
public class TokenParameter
{
public const string Issuer = "aa";//颁发者
public const string Audience = "bb";//接收者
public const string Secret = "1234567891234567978912345678912345679789";//签名秘钥
public const int AccessExpiration = 30;//AccessToken过期时间(分钟)
}

3、添加获取token的接口
///


/// 获取Token
///

///
[HttpGet]
[Route("token")]
public ActionResult GetAccessToken(string username, string password)
{
//这儿在做用户的帐号密码校验。我这儿略过了。
if (username != "admin" || password != "admin")
return BadRequest("Invalid Request");

 var claims = new[]{new Claim(ClaimTypes.Name, username),new Claim(ClaimTypes.Role, ""),

};

 var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(TokenParameter.Secret));var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);var jwtToken = new JwtSecurityToken(TokenParameter.Issuer, TokenParameter.Audience, claims, expires: DateTime.UtcNow.AddMinutes(TokenParameter.AccessExpiration), signingCredentials: credentials);var token = new JwtSecurityTokenHandler().WriteToken(jwtToken);return Ok(token);

}

4、注入service

builder.Services.AddAuthentication(x =>
{
x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(x =>
{
x.RequireHttpsMetadata = false;
x.SaveToken = true;
x.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,//是否调用对签名securityToken的SecurityKey进行验证
IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(TokenParameter.Secret)),//签名秘钥
ValidateIssuer = true,//是否验证颁发者
ValidIssuer = TokenParameter.Issuer, //颁发者
ValidateAudience = true, //是否验证接收者
ValidAudience = TokenParameter.Audience,//接收者
ValidateLifetime = true,//是否验证失效时间
};
});

//添加身份认证中间件
app.UseAuthentication();
在app.UseAuthorization();前

5、添加认证接口
[HttpGet("{id}")]
[Authorize]
public ContentResult todo(int id)
{
return Content("okk");
}

测试:
直接访问授权的接口
image

获取token
image

token加入到header bear中
image

测试成功!
image

下载项目
https://files.cnblogs.com/files/blogs/815970/JWTAUTH.rar?t=1760155737&download=true

http://www.gsyq.cn/news/18723.html

相关文章:

  • 实用指南:同时使用ReactUse 、 ahooks与性能优化
  • 解决vscode中用npm报错
  • 2025 年中频炉厂商最新推荐排行榜权威发布,深度剖析应达电气等优质企业核心优势及选购要点节能/智能/自动化成套/高效率/智能感应加热中频炉厂家推荐
  • 详细介绍:Day52 串口通信原理与IMX6ULL UART驱动开发
  • vue3实现抓拍并上传
  • 2025不锈钢管件厂家推荐榜:技术实力与诚信口碑双重保障
  • 【Qt开发】输入类控件(二)-> QTextEdit - 详解
  • 基于MATLAB的禁忌搜索算法解决物流网络枢纽选址问题
  • 详细揭秘:详细揭秘:集合划分容斥的容斥系数
  • 学好微积分特别是偏微分方程的数值求解对于学习CFD的好处?
  • 基于Logistic映射与Chen超混沌系统结合DNA分块编解码的图像加密技术
  • Web前端入门第 88 问:引入 JavaScript 的 script 标签究竟有多少用法?
  • 我如何控制新增的节点是 leader 还是follower呢?
  • 2025 年全屋定制 / 高端 / 装修收纳设计 / 不锈钢橱柜 / 别墅 / 大平层装修公司推荐:苏州伍德家居与百能家居的优质定制解决方案解析
  • SAS重要证明结论
  • 2025 年蒸汽发生器厂家最新推荐排行榜:含 800KG 燃气 / 超低氮冷凝 / 400KG 燃气等多类型设备企业优选指南
  • 全网首发/Qt结合ffmpeg实现rist推拉流/可信赖的互联网流媒体协议/跨平台支持各个系统
  • 2025 年灌装机厂家最新推荐权威榜单:聚焦全自动液体定量灌装设备,精选饮用水 / 纯净水 / 矿泉水灌装领域优质企业
  • 2025 年灌装生产线厂家最新推荐排行榜:覆盖饮料 / 矿泉水 / 纯净水 / 桶装水 / 全自动生产线,助力企业精准选购优质设备权威榜单
  • Vue 创建项目的几种方式
  • C# 使用WebView2加载本地资源
  • 从零开始部署Android环境的Jenkins CI/CD流水线(docker环境,Win强大的系统)
  • 集群、分布式、微服务
  • 改了 Nacos 一行配置,搞崩线上支付系统!
  • Gitee Insight领跑DevSecOps赛道:2025研发效能工具全景评测
  • Vue3 集成 VueRouter
  • 2025 最新球墨铸铁管件厂商推荐排行榜权威发布,市政 / 给排水 / 消防用管件优选品牌深度解析
  • CH585在MACOS系统中协商BLE连接间隔至7.5ms
  • FastCopy复制软件绿色版下载!一款快速复制软件!方便实用
  • CopyOnWriteArrayList 的故事--一起看看java原生的读写分离