.Net 6 WebAPI 使用JWT进行 授权认证

1、安装组件(Nuget)

Microsoft.AspNetCore.Authentication.JwtBearer

2、Program.cs 配置

//授权认证(使用JWT)

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(o =>

{

// 私钥

var secretByte = Encoding.UTF8.GetBytes("kdsfldsflkdslkflkdsflkdslfdslkflk");

o.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters

{

// 验证发布者

ValidateIssuer = true,

// 发布者信息

ValidIssuer = "BeiJingBW",

    // 验证接收者
ValidateAudience = true,
// 接收者
ValidAudience = "BeiJingBW", // 验证是否过期
ValidateLifetime = true, // 验证私钥
IssuerSigningKey = new SymmetricSecurityKey(secretByte) };

});

// 配置Swagger

builder.Services.AddSwaggerGen(o =>

{

// 显示 授权信息

o.AddSecurityDefinition("Bearer", new Microsoft.OpenApi.Models.OpenApiSecurityScheme()

{

Description = "添加JWT授权Token:Bearer Token值",

Name = "Authorization",

In = Microsoft.OpenApi.Models.ParameterLocation.Header,

Type = Microsoft.OpenApi.Models.SecuritySchemeType.ApiKey,

BearerFormat = "JWT",

Scheme = "Bearer"

});

o.AddSecurityRequirement(new Microsoft.OpenApi.Models.OpenApiSecurityRequirement

{

{

new OpenApiSecurityScheme

{

Reference = new OpenApiReference

{

Type = ReferenceType.SecurityScheme,

Id = "Bearer"

}

},

new string[]

{

        }
}
});

});

// 鉴权

app.UseAuthentication();

app.UseAuthorization();

3、控制器加授权认证 [Authorize],登录判定方法设置为匿名可访问 [AllowAnonymous]

[Route("api/[controller]/[action]")] // 路由配置

[ApiController]

[Authorize]

public class ECommerceController : ControllerBase

{

[HttpGet]

[AllowAnonymous]

public IActionResult Login(string? loginName, string? password)

{

// 登录判定

}

}

4、控制器中,编写生成 JWT Token 方法

///



/// 生成 JWT Token(令牌)

///

///

private string CreateTokenString()

{

//私钥

var secretByte = Encoding.UTF8.GetBytes("kdsfldsflkdslkflkdsflkdslfdslkflk");

// 非对称加密

var signingKey = new SymmetricSecurityKey(secretByte);

// 使用256 生成数字签名

var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256);

// 生成Token

var token = new JwtSecurityToken(

issuer: "BeiJingBW",

audience: "BeiJingBW",

expires: DateTime.Now.AddDays(1), // 一天后过期

signingCredentials: signingCredentials

);

// 生成token 字符串

var strToken = new JwtSecurityTokenHandler().WriteToken(token);

return strToken;

}

5、登录方法中,登录成功要生成 JWT Token,返回给前端

///



/// 登录判定(可以匿名,也就是授权对它没有作业)

///

/// 登录名

/// 密码

///

[HttpGet]

[AllowAnonymous]

public IActionResult Login(string? loginName, string? password)

{

try

{

// 登录判定,登录成功

// 登录成功生成JWT Token

string strToken = this.CreateTokenString();

}

// 返回前端信息加Jwt token信息

return Ok(new

{

user = user,

token = strToken

});

}

catch (Exception ex)

{

// 错误日志

logger.LogError("登录判定出错!" + ex.Message);

throw;

}

}

6、Swagger中调试

运行登录方法,复制生成的 JWT token字符串。

点击 名上角 “Authorize” 按钮,在文本框中输入:Bearer token值,格式如:Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODYyOTc3NTgsImlzcyI6IkJlaUppbmdCVyIsImF1ZCI6IkJlaUppbmdCVyJ9.hb9kZv_qj8Eosgnw6ayTf6nA2-07ym6p6xbVS237aI8,点击“Authorize”。

之后运行Swagger中的其它方法,它会自动加载 JWT token,方法正常运行。如果没有第2部,运行方法会提示无授权的错误。

7、前端Vue配置

7.1 main.js 配置

// 数据访问

import axios from 'axios'

// 添加JWT token信息

axios.defaults.headers.common["Authorization"] = "Bearer " + window.localStorage.getItem("token");

7.2 登录方法,成功登录后,写token信息到本地

methods:{

// 登录

login() {

// 登录判定

// 登录成功,写JWT的 token到本地

window.localStorage.setItem("token", res.data.token);

// 数据提交后端要加入新的Token值

this.axios.defaults.headers.common["Authorization"] =

"Bearer " + res.data.token;

}

}

.Net 6 WebAPI 使用JWT进行 授权认证配置的更多相关文章

  1. [转]三分钟学会.NET Core Jwt 策略授权认证

    [转]三分钟学会.NET Core Jwt 策略授权认证 一.前言# 大家好我又回来了,前几天讲过一个关于Jwt的身份验证最简单的案例,但是功能还是不够强大,不适用于真正的项目,是的,在真正面对复杂而 ...

  2. JWT实现授权认证

    目录 一. JWT是什么 二. JWT标准规范 三. 核心代码简析 四. 登录授权示例 五. JWT 使用方式 六. JWT注意事项 一. JWT是什么 JSON Web Token(JWT)是目前最 ...

  3. 三分钟学会.NET Core Jwt 策略授权认证

    一.前言 大家好我又回来了,前几天讲过一个关于Jwt的身份验证最简单的案例,但是功能还是不够强大,不适用于真正的项目,是的,在真正面对复杂而又苛刻的客户中,我们会不知所措,就现在需要将认证授权这一块也 ...

  4. CZGL.Auth: ASP.NET Core Jwt角色授权快速配置库

    CZGL.Auth CZGL.Auth 是一个基于 Jwt 实现的快速角色授权库,ASP.Net Core 的 Identity 默认的授权是 Cookie.而 Jwt 授权只提供了基础实现和接口,需 ...

  5. 重新拾取:ASP.NET Core WebApi 使用Swagger支持授权认证

    园子里已经有很多.NET Core 集成Swagger的文章,但对于使用授权的介绍蛮少的. public static class SwaggerServiceExtensions { public ...

  6. .NetCore WebApi——基于JWT的简单身份认证与授权(Swagger)

    上接:.NetCore WebApi——Swagger简单配置 任何项目都有权限这一关键部分.比如我们有许多接口.有的接口允许任何人访问,另有一些接口需要认证身份之后才可以访问:以保证重要数据不会泄露 ...

  7. 如何在 Net6.0 中对 WebAPI 进行 JWT 认证和授权

    一.简介 我们做微服务开发,或者说做分布式开发,有一项技术我们是避不开的,那就是WebAPI,在 Net6.0中,有两类 WebAPI,一类是极简 WebAPI,它砍掉了很多冗余的东西,更纯粹的是做 ...

  8. Asp.NetCore3.1 WebApi 使用Jwt 授权认证使用

    1:导入NuGet包 Microsoft.AspNetCore.Authentication.JwtBearer 2:配置 jwt相关信息 3:在 startUp中 public void Confi ...

  9. WebApi使用JWT认证(二)

    这是第二部:实现NetCore上的WebApi使用JWT认证 1.NetCore新建一个WebApi的项目 2.打开AppSettings.json,添加Jwt的信息,这里为了演示而已 { " ...

  10. ASP.NET Core WebApi基于JWT实现接口授权验证

    一.ASP.Net Core WebApi JWT课程前言 我们知道,http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,用户还要再 ...

随机推荐

  1. [转帖]Pepper-Box - Kafka Load Generator

    https://github.com/GSLabDev/pepper-box Pepper-Box is kafka load generator plugin for jmeter. It allo ...

  2. [转帖]unmatched(riscv64)上编译,安装和移植SPEC CPU 2006

    https://zhuanlan.zhihu.com/p/429399630 Linux ubuntu 5.11.0-1021-generic #22-Ubuntu SMP Tue Sep 28 15 ...

  3. 【转帖】淫技巧 | 如何查看已连接的wifi密码

    主题使用方法:https://github.com/xitu/juejin-markdown-themes theme: juejin highlight: github 一.引言 在实际工作中,常常 ...

  4. vue3逻辑分离和页面快速展示数据

    逻辑分层 我们在使用vue3开发项目的时候, 如何进行[区域分层]呢???? 举一个简单的小粒子 一个区域有[查询逻辑.修改后的保存逻辑.新增逻辑.删除逻辑] 这个页面可能还有其他的区域.A区域.B区 ...

  5. Linux慢 进程kswapd0与events/0消耗大量CPU的问题 一次网站宕机的处理

    今天下午网站宕了两次机,发工单给阿里云,发现原因是服务器的CPU 100%了. 重启服务器后,使用 top 命令看看是哪些进程消耗那么大的 CPU 使用.盯了有好十几分钟,主要消耗 CPU 的进程有两 ...

  6. ABP 领域服务层学习记录

    在ABP框架中有一个约定,所有的领域服务都应该继承并实现IDomainService接口,在领域层Core创建某一个实体的领域服务类,继承并实现IDomainService接口.在ABP框架中,领域服 ...

  7. 提高Unity编译dll的速度

    前言 我们有一个Unity纯C#开发的mmo项目(使用ILRuntime热更,开发阶段跑纯C#),在开发到后期之后,每次修改C#代码编译时间在25秒左右,这部分的等待时间是很长的, 我在想有没有办法可 ...

  8. 推荐系统[四]:精排-详解排序算法LTR (Learning to Rank)_ poitwise, pairwise, listwise相关评价指标,超详细知识指南。

    0.前言召回排序流程策略算法简介 推荐可分为以下四个流程,分别是召回.粗排.精排以及重排: 召回是源头,在某种意义上决定着整个推荐的天花板: 粗排是初筛,一般不会上复杂模型: 精排是整个推荐环节的重中 ...

  9. java线程池实现多任务并发执行

    Java线程池实现多任务并发执行 1️⃣ 创建一些任务来落地多任务并发执行 每一个数组里面的数据可以看成任务,或者是需要并发的业务接口, 数组与数组之间,可以看作为他们之间有血缘关系,简单来说就是: ...

  10. hv_balloon: Balloon request will be partially fulfilled. Balloon floor reached

    windows 的hyper-v 安装了 centos 或者龙蜥 操作系统,会一直提示这个信息: hv_balloon: Balloon request will be partially fulfi ...