5.1基于JWT的认证和授权「深入浅出ASP.NET Core系列」

简介: 希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注。
+关注继续查看

希望给你3-5分钟的碎片化学习,可能是坐地铁、等公交,积少成多,水滴石穿,码字辛苦,如果你吃了蛋觉得味道不错,希望点个赞,谢谢关注。

Cookie-Based认证

认证流程

  我们先看下传统Web端的认证流程:

  

  以上流程很简单,有过mvc开发经验的都了如指掌,一图胜千言就不展开介绍了,下面简单演示一下实现:

编码实现

  首先我们新建一个mvc项目

  

  我们在AdminController.cs里增加[Authorize]

  

  在Startup.cs中

  

  这时候我们访问https://localhost:5001/Admin/Index后台会跳转到Account/Login

  

  所以我们要先登陆一下:https://localhost:5001/account/login,模拟登陆,最后再访问Admin/Index就成功了,如下图:

  

  整个过程,我录个视频看下:

  

JWT认证

 简介和使用场景

  Cookie-Based认证不是我们这篇文章的重点,接下来我们来看下JWT(JSON Web Token)认证,关于这个认证网上资料也非常多。简书上有篇不错的参考(跳转),这里还有一个JWT的官网值得关注

  JWT一般用在基于RESTful API的移动端、Web端、其他端等多个终端的联合认证。和Cookie-Based认证最大的不同是,他不需要手动来重定向,API只返回标准的HTTP Code,具体有哪些Code,我们可以查看阮一峰大哥的RESTful API设计指南RESTful API最佳实践。这里扯远了,我们看下图流程,基本就知道JWT的机制了。

  

  关于JWT我们掌握它的Header、Payload、Signature三段部分就差不多了,如下图所示:

  

  我们看到左边的Token的是怎么来的,右边的SIGNATURE经过多重加密进行拼接,其中HEADER和PAYLOAD进行了BASE64位加密,然后+256位的Secret,外层再用SHA256进行加密。 

编码实现

  接下来我们编码来实现这个认证:

  1) 首先我们新建JSON配置和对应的实体映射。

  

  2)在Starup.cs当中,我们需要引入类库

using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
using System.Text;
  3)同时在Starup.cs中,通过Bind方法进行配置和实体的绑定,然后配置JWT相关参数。如下图所示:

   

  4)最后别忘记配置权限管道

  

  5)我们再看看加和不加Authorize的浏览器返回的区别,如下图所示:

  

  以上代码大部分是截图,截图看起来更加顺眼,虽然不方便复制,如果你想看完整代码可以访问我的GitHub地址

  希望以上分享对你有帮助,我是张飞洪,入行10年有余,人不堪其忧,吾不改其乐,谢谢您关注我头条号。

目录
相关文章
|
11天前
|
开发框架 前端开发 .NET
.NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!
.NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!
79 0
.NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!
|
24天前
|
开发框架 .NET 中间件
ASP.Net Core 之SinalR控制器中发送信息
获取 IHubContext 的实例 在 ASP.NET Core SignalR,您可以访问的实例IHubContext通过依赖关系注入。 您可以注入的实例IHubContext到控制器、 中间件或其他 DI 服务。 使用的实例将消息发送到客户端。
35 0
|
24天前
|
存储 开发框架 .NET
ASP.NET Core SignalR系列之Hub教程
ASP.NET Core SignalR系列之Hub教程
33 0
|
24天前
|
开发框架 .NET 中间件
Swagger的 ASP.NET Core Web API 帮助页
使用 Web API 时,了解其各种方法对开发人员来说可能是一项挑战。 Swagger 也称为OpenAPI,解决了为 Web API 生成有用文档和帮助页的问题。 它具有诸如交互式文档、客户端 SDK 生成和 API 可发现性等优点。
22 0
|
24天前
|
开发框架 JSON .NET
使用 ASP.NET Core 创建 Web API系列
使用 ASP.NET Core 创建 Web API系列
26 0
|
24天前
|
开发框架 前端开发 .NET
ASP.NET Core 基础知识之​Startup 类配置
Startup 类配置服务和应用的请求管道。
29 0
|
26天前
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(完:内附源码)
经过一段时间的准备,【ASP.NET Core MVC开发实战之商城系统】已经完成,目前代码已开发完成,先将全部内容整理分享,如有不足之处,还请指正。
30 0
|
27天前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(六)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情,购物车等功能的开发,今天继续讲解订单管理功能开发,仅供学习分享使用,如有不足之处,还请指正。
108 0
|
1月前
|
开发框架 安全 中间件
Asp.Net Core遇到Swagger(五)-Swashbuckle-Jwt篇
Asp.Net Core遇到Swagger(五)-Swashbuckle-Jwt篇
51 0
Asp.Net Core遇到Swagger(五)-Swashbuckle-Jwt篇
|
1月前
|
开发框架 中间件 .NET
Asp.Net Core认证-Jwt-基础篇
Asp.Net Core认证-Jwt-基础篇
52 0
相关产品
云迁移中心
推荐文章
更多