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

一、简介
    我们做微服务开发,或者说做分布式开发,有一项技术我们是避不开的,那就是WebAPI,在 Net6.0中,有两类 WebAPI,一类是极简 WebAPI,它砍掉了很多冗余的东西,更纯粹的是做 API的,也更适合做微服务的开发。另外一类就是我们通常使用的正常 API,这个没得说,也是我们使用最多的。
    我们开发的API必须做鉴权和授权操作,否则,就成了裸跑了,那对于系统来说是很危险的。总体来说,一般的WebAPI和MinimalAPI鉴权的过程都是差不多的,但是也有微小的差异。今天我们就来详细说一下,内容很简单,大家有了基础可以随意去扩展。

   开发环境详情:
          操作系统:Windows 10 Professional
          开发工具:Visual Studio 2022
          开发语言:C#
          开发平台:Asp.Net Core 6.0 WebAPI
          测试工具:PostMan

二、具体步骤
    我们在做具体的开发前,也要做一些准备工作,我们要做鉴权和授权,尤其是要使用 JWT 做鉴权和授权,这里面包含两个项目,一个是鉴权服务器,用于提供 JWTToken,另外一个项目是需要做鉴权和授权的具体 WebAPI 项目。有了准备,我们就可以开始了。
 1、第一个项目:PatrickLiu.Net6API.AuthenticationCenter,用于提供获取 Token 接口。
        

(1)、Program.cs 源码如下,红色是重要代码:            

 1 using PatrickLiu.Net6API.Extensions;
 2 
 3 var builder = WebApplication.CreateBuilder(args);
 4 
 5 builder.Services.AddControllers();
 6 builder.Services.AddEndpointsApiExplorer();
 7 builder.Services.AddSwaggerGen();
 8 
 9 builder.Services.Configure<JWTTokenOption>(builder.Configuration.GetSection("JWTTokenOption"));
10 builder.Services.AddTransient<IJWTService, JWTService>();
11 
12 var app = builder.Build();
13 
14 app.UseSwagger();
15 app.UseSwaggerUI();
16 
17 app.MapControllers();
18 
19 app.Run();

 (2)、AuthenticationController 源码如下:

 1 using Microsoft.AspNetCore.Mvc;
 2 using Newtonsoft.Json;
 3 using PatrickLiu.Net6API.Extensions;
 4 
 5 namespace PatrickLiu.Net6API.AuthenticationCenter.Controllers
 6 {
 7     [ApiController]
 8     [Route("api/[controller]/[action]")]
 9     public class AuthenticationController : ControllerBase
10     {
11         private readonly IJWTService _jWTService;
12 
13         /// <summary>
14         /// 实例化。
15         /// </summary>
16         /// <param name="jWTService">注入服务。</param>
17         public AuthenticationController(IJWTService jWTService)
18         {
19             _jWTService = jWTService;
20         }
21 
22         /// <summary>
23         /// 根据用户名和密码获取 Token。
24         /// </summary>
25         /// <param name="userName">用户名。</param>
26         /// <param name="password">密码。</param>
27         /// <returns></returns>
28         [HttpPost]
29         public string Login(string userName, string password)
30         {
31             if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(password))
32             {
33                 if (string.Compare(userName, "PatrickLiu", true) == 0 && string.Compare(password, "liulei123456", true) == 0)
34                 {
35                     string token = _jWTService.GetToken(userName, password);
36                     return JsonConvert.Serial
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Netcore6.0是微软推出的全新版本的开发框架,它提供了强大且灵活的功能,用于构建Web应用程序和APIWeb API是Netcore6.0的一项重要功能,它允许我们构建基于HTTP协议的API,并通过JSON格式进行数据交换。 JWT(JSON Web Token)是一种用于在网络应用间传递信息的安全方法。在Netcore6.0,我们可以使用JWT来实现Web API授权功能。JWT由三部分组成:头部、载荷和签名。头部包含了令牌的类型和算法,载荷包含了我们想要传递的数据,签名通过使用密钥进行加密来验证令牌的合法性。 在Netcore6.0,我们可以使用Microsoft提供的Microsoft.AspNetCore.Authentication.JwtBearer包来简单地实现JWT授权功能。首先,我们需要在Startup.cs文件的ConfigureServices方法配置JWT的身份验证服务,并指定密钥、颁发者、验证等参数。然后,在Configure方法启用身份验证间件和JWT授权间件。 在Vue3,我们可以使用Axios库来发送HTTP请求并附带JWT令牌进行授权Vue3是一种流行的JavaScript框架,用于构建现代化的用户界面。通过Axios,我们可以将JWT令牌添加到请求的Authorization头部,并在后端接收到请求时进行验证。 为了实现Vue3与Netcore6.0JWT授权,我们首先需要在Vue3项目安装Axios库,并配置请求拦截器,在每个请求发送前将JWT令牌添加到请求头。后端接收到带有JWT令牌的请求后,使用相同的密钥和算法进行解密并验证令牌的合法性。 综上所述,Netcore6.0Web APIVue3的JWT授权组合,可以实现安全可靠的API授权。通过合理的配置和使用,我们可以保护API免受未经授权的访问,并确保只有经过身份验证的用户才能访问敏感数据或执行特定操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值