惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
IT之家
IT之家
博客园 - 聂微东
The Cloudflare Blog
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
S
SegmentFault 最新的问题
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
H
Help Net Security
博客园 - 叶小钗
V
V2EX
WordPress大学
WordPress大学
J
Java Code Geeks
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园_首页
C
Check Point Blog
B
Blog
D
DataBreaches.Net
美团技术团队
罗磊的独立博客

博客园 - superstar

我的抽奖系统 CRM 后台管理 计件系统 -.netcore-审批人 计件系统 win10家庭版怎么打开组策略编辑器 触发值更新 求类似这个Excel的甘特国科项目模板 SQL账表实现超始日期为最近7天 简单帐表双击打开直接SQL账表 安装补丁的时候提示“无法连接,需要安装K3CloudManager服务”,该服务怎么安装? sql 开窗函数 需要基本单位实发数量!= 主库存基本单位实发数量 就不报这个错 邮件服务器设置 结合实例来分析SQL的窗口函数 sql 逐行累加 如何设置而是采购员默认值 BOSS语句整理!!!花了两个小时!!! 金蝶版本升级例如 6.2 升级成8.0 建议先升级个7.0过滤版本再升级8.0 金蝶云星空MRP运算测试 oracle使用exp/imp导入导出(用户) 1.Spring Boot创建SSM(IDEA+ORACLE) springboot整合mybatis实现多表查询的实战记录 一年级拼音练习题
.NET 6 使用JWT Bearer认证和授权的步骤
superstar · 2022-07-18 · via 博客园 - superstar

什么是JWT,什么是JWT Bearer就不累述了。在ASP.NET WEBAPI中使用JWT Bearer的时候比较多,最近我终于学会配置了。
第一步:对应项目安装Microsoft.AspNetCore.Authentication.JwtBearer

第二步:appsettings.json中,添加JWT的配置,参考代码如下,注意SecretKey不能设置成太短的纯数字,不然要报错

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "JWT": {
    "SecretKey": "weblog@vip.qq.com",
    "Issuer": "2222",
    "Expires": 10,
    "Audience": "22333"
  }
}

第三步:在Program.cs中,将JWT添加到服务中,参考代码

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>
{
    options.TokenValidationParameters = new TokenValidationParameters()
    {
        ValidateIssuer = true,
        ValidIssuer = builder.Configuration["JWT:Issuer"],
        ValidateAudience = true,
        ValidAudience = builder.Configuration["JWT:Audience"],
        ValidateLifetime = true,
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["JWT:SecretKey"]))
    };
});

第四步:在Program.cs中,启用认证,添加代码如下,这个必须添加在app.UseAuthorization();前面,两个名称很像,注意区别。

app.UseAuthentication();

第五:创建一个方法,专门用来生成JWT的Token,参考代码

public string CreateToken()
{
    // 1. 定义需要使用到的Claims
    var claims = new[]
    {
        new Claim("Id", "9527"),
        new Claim("Name", "Admin")
    };

    

注意:claims里面的内容应该要从外面创建来,动态存一些用户信息之类的;configuration["JWT:SecretKey"]这种是在读取配置文件appsettings.json中的配置,configuration要在类的构造函数中注入进来。

第六,找到有关登录方法的控制器,在登录成功之后,将token返回给用户,参考代码

public IActionResult Login(LoginDto loginDto)
{
    if (!ModelState.IsValid)
    {
        return BadRequest("Email or Password can not be empty");
    }
    var token = _makeToken.CreateToken();
    return Ok(token);
}

第七,在对应业务的控制器上,或者控制器下面的方法上,加上特性[Authorize]

就这样,.NET 6实现了基本的 JWT Bearer认证和授权配置。