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

推荐订阅源

Google DeepMind News
Google DeepMind News
爱范儿
爱范儿
J
Java Code Geeks
L
LangChain Blog
V
V2EX
大猫的无限游戏
大猫的无限游戏
S
SegmentFault 最新的问题
博客园 - Franky
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
Blog — PlanetScale
Blog — PlanetScale
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
博客园 - 司徒正美
B
Blog
G
Google Developers Blog
Stack Overflow Blog
Stack Overflow Blog
罗磊的独立博客
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog

博客园 - 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认证和授权配置。