1.ASP.NET Core配置系列五
2.如何在 Asp.Net Core 实现 Excel 导出功能
3.C#/.NET/.NET Core优秀项目框架推荐
4..NET反向代理组件YARP的源码简单使用
5.请推荐学.net方面的教程或书籍
6.分享一个基于.NET Core 3.1开发的模块化项目
ASP.NET Core配置系列五
在开发ASP.NET Core应用程序时,异常处理是源码至关重要的。本文将详细阐述如何在开发环境中添加异常处理中间件以及在不同环境下的源码异常处理策略。
首先,源码我们需要确保在运行应用程序时能捕获并处理异常。源码在浏览器输入指定URL时,源码易语言源码鹿鼎记若遇到异常,源码通常只会得到无响应的源码状态提示。为了获取更友好的源码异常消息,如资源不存在、源码无访问权限、源码资源不可用等,源码我们应当启用异常处理功能。源码
在ASP.NET Core中,源码通常在Program类中添加ExceptionHandler中间件,源码并使用`UseDeveloperExceptionPage`方法生成HTML错误信息。对于特定的响应状态码错误,我们可以使用`app.UseStatusCodePages()`中间件进行处理。在`Program.cs`类中添加相关代码,并在运行前注释掉`ResponseEditingMiddleware`中间件。
重新运行应用程序,并输入指定URL,将能够看到详细的错误页面,例如,当资源不存在引发异常时,页面将显示异常原因。如果在action方法中代码发生异常,如NullReferenceException,通过访问特定URL,能获得更详细的异常信息和堆栈跟踪。
在不同的开发环境(如生产环境和开发环境)中,异常处理策略也有所不同。在生产环境中,我们可以添加一个action方法,当错误发生时调用它。在开发环境中,为了提供更详细的溯源码 案例错误信息,我们可以创建错误视图。通过在`Program.cs`类中配置`UseExceptionHandler`中间件,并指定错误路径,如`/Home/Error`,可以在错误发生时调转到该action。
对于appsettings.json文件的配置,它存储了数据库链接、全局变量以及其他ASP.NET Core应用程序的配置信息。文件位于项目根目录下,包含了键值对,如`Key1: Microsoft`、`Key2: DotNet`等。在项目文件中创建`appsettings.json`文件,并根据需要添加配置节点,如中间件的启用状态。在`Program.cs`类中使用`app.Configuration()`方法读取配置文件,并根据配置注册相应的中间件。
在Controller和View中访问appsettings.json,可以通过注入`IConfiguration`实现。在大型项目中,为避免直接访问过多的实体类,可从`appsettings.json`中提取所需的节点并转化为实体类,通过实体类访问配置文件中的键值对。为实现这一过程,首先创建包含节点的类,然后在`Program.cs`中使用`Configure`注册该类,之后在控制器中使用`IOptions`获取该类。
在View中注入`IOptions`,允许在视图中使用配置文件中存储的值。通过`@settings.Value.PropertyName`可以访问属性。对于不同的开发和生产环境,可以创建两个不同的`appsettings`文件,如`appsettings.Production.json`和`appsettings.Development.json`。框架会根据当前环境自动选择相应的配置文件,从而实现环境间的配置隔离。
综上所述,好友动态源码本文涵盖了ASP.NET Core配置系列的各个方面,从文件结构到中间件使用,再到环境间的配置差异,提供了全面的异常处理策略和配置管理方案。为了深入学习和实践,请参考源代码地址:github.com/bingbing-gui...,并加入技术群获取更多学习资源。
如何在 Asp.Net Core 实现 Excel 导出功能
在Web应用开发中,实现Excel导入导出功能是一个常见的需求。本文将讨论如何在Asp.Net Core中使用ClosedXML库实现Excel数据导出。
首先,需要在项目中安装ClosedXML。可以通过NuGet包管理器或命令行完成安装,命令如下:
为了将数据导出成CSV文件,可以使用CsvExport或AWright.SimpleCSVExporter库。下面定义一个Author类,用于存储数据。
接着,塞入数据到authors列表中,然后编写一个DownloadCommaSeperatedFile方法,将CSV导出功能集成到Controller的Action中。
为了实现Excel数据导出,生成workbook和worksheet。在worksheet中添加数据,然后将workbook转换为内存流,通过Controller的FileContentResult返回给客户端。
最后,将所有业务逻辑集成到一个Action中,实现Excel数据导出功能。对于更复杂的Excel数据操作,可以考虑使用EPPlus或NPOI。
关于ClosedXML的更多信息,可以参考其GitHub仓库:github.com/ClosedXML/Cl...。更多信息和高质量内容,可访问我的GitHub:dotnetfly。
C#/.NET/.NET Core优秀项目框架推荐
为.NET开源者提供一个推荐自己优秀框架的github 论坛源码地址,大家可以把自己的一些优秀的框架,或者项目链接地址存到在这里,提供给广大.NET开发者们学习(排名不分先后)。
Github项目仓库收集地址: github.com/YSGStudyHard...
填写格式如下:
项目or框架名称+访问链接地址+项目描述: NPOI-ExportWordAndExcel-ImportExcelData 一个简单,易懂的通用 ASP.NET Core NPOI导出复杂Word、复杂美观Excel和Excel数据导入详细示例开源项目(开箱即用,无需其他繁琐配置)。 C#/.NET Core/.NET项目宝库(收集了大量优秀的C#、.NET、.NET Core项目) 该库主要是为我们.NET开发者提供一个寻找优秀C#/.NET Core/.NET项目的入口,通过了解和对比更多的项目来选择最适合我们自己学习、工作开发的一套项目。优秀的项目是不应该被埋没的,欢迎大家一起加入这个组织共同完善、发展.NET社区!注意:这些都是非常优秀的作者所写的项目,排名不分先后,欢迎前往原址Star
Blog.Core
项目地址: github.com/anjoy8/Blog....
Blog.Core一个开箱即用的企业级前后端分离 .NET Core6.0 Api + Vue 2.x + RBAC权限框架。 官方文档地址: apk.neters.club/.doc
AspNetCore
项目地址: github.com/dotnet/aspne...
ASP.NETCore是一个跨平台的.NET框架,用于在Windows、Mac或Linux上构建基于云的现代web应用程序。
WeiXinMPSDK
项目地址: github.com/JeffreySu/We...
微信公众平台SDK Senparc.Weixin for C#,支持.NET Framework及.NET Core。已支持微信公众号、小程序、小游戏、企业号、企业微信、开放平台、微信支付、JSSDK、微信周边等全平台。 WeChat SDK for C#.
ABP Framework
项目地址: github.com/abpframework...
ABP是一个开源应用程序框架,专注于基于 ASP.NET Core的Web应用程序开发,但也支持开发其他类型的应用程序. 官方文档地址: documentation
Util
项目地址: github.com/dotnetcore/U...
Util是一个.net core平台下的应用框架,旨在提升小型团队的开发输出能力,由常用公共操作类(工具类)、分层架构基类、App滤镜源码Ui组件,第三方组件封装,第三方业务接口封装,配套代码生成模板,权限等组成。
...
FreeRedis
项目地址: github.com//Free...
FreeRedis 是 .NET+ Redis 客户端。支持集群、哨兵、主从、发布-订阅、lua、管道、事务、流、客户端缓存和池化。
FreeSql
项目地址: github.com/dotnetcore/F...
FreeSql 是一款功能强大的对象关系映射(O/RM)组件,支持 .NET Core 2.1+、.NET Framework 4.0+ 以及 Xamarin。
SqlSugar
项目地址: github.com/donet5/SqlSu...
SqlSugar是一款 老牌 .NET 开源ORM框架,由果糖大数据科技团队维护和更新 ,
1. .NET中唯一支持全自动分表组件,SAAS分库,大数据处理的ORM 2. .NET 百万级写入、更新 性能最强框架 3. 使用最简单的ORM 文档,视频教程 4. 媲美原生的极限的性能 5.Github star数仅次于EF 和 Dapper,每月nuget下载量超过1万 更多优点: 简单易用、功能齐全、高性能、轻量级、服务齐全、官网教程文档、有专业技术支持一天小时服务 支持数据库:MySql、SqlServer、Sqlite、Oracle 、 postgresql、达梦、人大金仓、神通数据库
...
Autofac
项目地址: github.com/autofac/Auto...
Autofac 是.NET框架中最常用的依赖注入框架之一。相比.Net Core标准的依赖注入库, 它提供了更多高级特性, 比如动态代理和属性注入等。
Mapster
项目地址: github.com/MapsterMappe...
一款高性能对象映射框架。
AutoMapper
项目地址: github.com/AutoMapper/A...
一款功能强大的对象映射框架(在 .NET 领域的开发者中有非常高的知名度和使用率)。
AspNetCoreRateLimit
项目地址: github.com/stefanprodan...
ASP.NET Core 限速中间件。
Polly
项目地址: github.com/App-vNext/Po...
Polly 是一个 .NET 弹性和瞬态故障处理库,允许开发人员以流畅和线程安全的方式表达重试、断路器、超时、隔板隔离和回退等策略。从 6.0.1 版开始,Polly 面向 .NET Standard 1.1 和 2.0+。
.NET反向代理组件YARP的简单使用
YARP,即Yet Another Reverse Proxy,是一个轻量级的.NET反向代理组件。它支持HTTP和HTTPS协议,能将请求转发到其他服务器。YARP的开源地址为github.com/microsoft/re...,适用于负载均衡、内部网络隔离、隐藏内部服务器IP地址等用途。转发请求时,YARP可以添加或修改HTTP头。
反向代理(Reverse Proxy)是一种网络服务器,它作为客户端和服务器之间的中介,帮助客户端访问服务器。当客户端发起请求时,反向代理会接收请求并转发到后端服务器。这样,客户端可访问内部服务器,而不会直接暴露内部服务器的IP地址。反向代理还用于加载平衡、缓存、保护服务器免受DDoS攻击等,添加或修改HTTP头以提升客户端服务。
使用YARP,首先新建ASP.NET Core项目,手动或命令模式添加Yarp.ReverseProxy包。在Program.cs文件中注册Yarp,随后配置appsettings.json添加Yarp配置项。配置完成后,站点将随机反向代理到指定的服务器。具体操作如下:新建ASP.NET Core项目,添加Yarp.ReverseProxy包,注册Yarp,配置appsettings.json,即可完成YARP的使用。
总结,本文简要介绍了.NET反向代理组件YARP和反向代理的概念,并通过示例演示了YARP的简单使用。希望本文能为读者提供有价值的信息,欢迎留言和点赞。
版权说明:本文来源于网络收集或网友供稿,仅供学习交流,如有侵权,请告知或留言,本平台将立即删除。
请推荐学.net方面的教程或书籍
推荐一本学习.NET方面的书籍,《OReilly.Head.First.C.Sharp》。OReilly出版社的书籍因其专业性和全面性而备受推崇。您可以在官方网站上找到这本书的电子版。在搜索栏输入"Head First"系列,即可找到相关资源。
《OReilly.Head.First.C.Sharp》这本书以轻松幽默的方式,深入浅出地讲解了C#语言的基础知识。它涵盖了从变量、数据类型、控制结构到面向对象编程、异常处理、泛型等多个方面,对于初学者和有一定经验的开发者都非常适合。通过实例驱动的学习方法,帮助读者快速掌握编程技巧。
此外,您还可以在线上教育平台如Coursera、Udemy或Codecademy寻找.NET编程课程。这些平台提供了丰富的编程课程,包括.NET Core、ASP.NET MVC、WPF等,覆盖了.NET开发的多个方面。课程通常以视频讲解、实践项目和编程挑战相结合的方式,帮助学员系统地学习和掌握.NET技术。
对于希望进一步深入学习.NET框架和相关技术的人来说,可以关注微软官方文档和社区。微软的官方文档提供了详细的API参考、教程和示例代码,是学习.NET的最佳资源之一。同时,参与微软技术社区(如Tech Community)或GitHub上的开源项目,可以结识更多.NET开发者,交流经验,共同进步。
总之,在学习.NET方面,可以选择经典书籍《OReilly.Head.First.C.Sharp》作为入门指南。同时,结合在线课程、官方文档和社区资源,可以更全面地掌握.NET技术,提升编程技能。
分享一个基于.NET Core 3.1开发的模块化项目
分享一个基于.NET Core 3.1开发的模块化项目,整个项目包括Asp.Net Core 3.1.2与MSSQL(LINUX版)。项目涉及中间件如Redis与RabbitMQ,并采用完全模块化设计,支持每个模块拥有独立的静态资源文件。开源地址:github.com/yupingyong/m...
项目结构包含以下几个关键部分:Mango.WebHost承载整个项目运行,Mango.Framework封装项目模块化核心。重点在于实现模块化设计的核心要点,后续博文中将详细讨论。
核心问题在于框架如何加载自定义模块。Asp.Net Core MVC提供部件管理类支持从外部DLL程序集加载组件,并通过ApplicationPartFactory获取组件信息。同时,需加载视图文件,使用ApplicationPartManager实现。加载程序集时,采用自定义的ModuleAssemblyLoadContext类,确保文件加载及管理的灵活性。
针对每个模块独立静态资源文件的需求,MVC框架提供UseStaticFiles方法,通过配置FileProvider与RequestPath属性实现文件访问路径的自定义。
本文主要介绍了模块化开发的核心代码展示与说明,具体实现细节将在后续博文中详细阐述。分享了一个前后分离的鉴权实现项目,开源地址:github.com/yupingyong/m...
该项目已在Linux环境中使用docker容器部署,具体地址不再公开发布。接下来,框架将向DDD(领域驱动设计)发展。通过分享自己的知识成果,旨在与社区交流,提升编码风格与技术层次。
有哪些好的C#开源项目推荐?
经过一些资料的收集,发现一些比较好的项目。ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程。当WebSockets可用时(即浏览器支持Html5)SignalR使用WebSockets,当不支持时SignalR将使用其它技术来保证达到相同效果。SignalR 将与客户端进行实时通信带给了ASP .NET 。当然这样既好用,而且也有足够的扩展性。以前用户需要刷新页面或使用Ajax轮询才能实现的实时显示数据,现在只要使用SignalR,就可以简单实现了。
github地址: /SignalR/SignalR
SparkleShare是一个共享开源代码的工具,它设计的目标就是让共享代码变得更加简单而不是你先前习惯的样子。它允许你实时的同步Git库,对于Linux、Mac和Windows都是是可用的。
github地址: /hbons/SparkleShare
第三方的跨平台的.NET运行环境,在微软的.net框架还只支持WIN平台的时候,mono就已经开始支持Unix,Windows, MacOS甚至IOS,安卓等操作系统了。
dapper-dot-net是一个超轻量型的ORM开源框架,对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/Rmapping),是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。dapper超级轻小,简便,运行速度很快。赢得了很多开发者的喜欢(推荐大家看看)。
github地址: /StackExchange/dapper-dot-ne
Opserver是闻名遐迩的网站Stack Overflow的开源监控解决方案,由Stack Exchange发布。它基于.NET框架构建,这在监控工具领域有些与众不同。 旨在为每个受监控系统的健康状况提供一个快速的总体视图,还允许用户使用下钻方法进行深入挖掘。
github地址: /StackExchange/dapper-dot-ne
以上排行榜仅代码该项目在github上的关注度,并不代表这些项目的实际流行度与欢迎度。统计以github的start数量为标准。
ASP.NET Core认è¯åçåå®ç°
é常å¨åºç¨ç¨åºä¸ï¼å®å ¨å为åå两个æ¥éª¤ï¼éªè¯åææãéªè¯è´è´£æ£æ¥å½å请æ±è ç身份ï¼èææåæ ¹æ®ä¸ä¸æ¥å¾å°ç身份å³å®å½å请æ±è æ¯å¦è½å¤è®¿é®ææçèµæºã
æ¢ç¶å®å ¨ä»éªè¯å¼å§ï¼æ们ä¹å°±ä»éªè¯å¼å§ä»ç»å®å ¨ã
æ们å ä»æ¯è¾ç®åçåºæ¯å¼å§èèï¼ä¾å¦å¨ Web API å¼åä¸ï¼éè¦éªè¯è¯·æ±æ¹æ¯å¦æä¾äºå®å ¨ä»¤çï¼å®å ¨ä»¤çæ¯å¦ææãå¦ææ æï¼é£ä¹ API 端åºè¯¥æç»æä¾æå¡ãå¨å½åç©ºé´ Microsoft.AspNetCore.Authentication ä¸ï¼å®ä¹å ³äºéªè¯çæ ¸å¿æ¥å£ã对åºçç¨åºéæ¯ Microsoft.AspNetCore.Authentication.Abstractions.dllã
å¨ ASP.NET ä¸ï¼éªè¯ä¸å å« 3 个åºæ¬æä½ï¼
éªè¯æä½è´è´£åºäºå½å请æ±çä¸ä¸æï¼ä½¿ç¨æ¥èªè¯·æ±ä¸çä¿¡æ¯ï¼ä¾å¦è¯·æ±å¤´ãCookie ççæ¥æé ç¨æ·æ è¯ãæ建çç»ææ¯ä¸ä¸ª AuthenticateResult 对象ï¼å®æ示äºéªè¯æ¯å¦æåï¼å¦ææåçè¯ï¼ç¨æ·æ è¯å°å¯ä»¥å¨éªè¯ç¥¨æ®ä¸æ¾å°ã
常è§çéªè¯å æ¬ï¼
å¨ææ管çé¶æ®µï¼å¦æç¨æ·æ²¡æå¾å°éªè¯ï¼ä½æææ访é®çèµæºè¦æ±å¿ é¡»å¾å°éªè¯çæ¶åï¼æææå¡ä¼ååºè´¨è¯¢ãä¾å¦ï¼å½å¿åç¨æ·è®¿é®åéèµæºçæ¶åï¼æè å½ç¨æ·ç¹å»ç»å½é¾æ¥çæ¶åãæææå¡ä¼éè¿è´¨è¯¢æ¥ç¸åºç¨æ·ã
ä¾å¦
质询æä½åºè¯¥è®©ç¨æ·ç¥éåºè¯¥ä½¿ç¨ä½ç§éªè¯æºå¶æ¥è®¿é®è¯·æ±çèµæºã
å¨ææ管çé¶æ®µï¼å¦æç¨æ·å·²ç»éè¿äºéªè¯ï¼ä½æ¯å¯¹äºå ¶è®¿é®çèµæºå¹¶æ²¡æå¾å°è®¸å¯ï¼æ¤æ¶ä¼ä½¿ç¨æç»æä½ã
ä¾å¦ï¼
æç»è®¿é®å¤çåºè¯¥è®©ç¨æ·ç¥éï¼
å¨è¿ä¸ªåºæ¯ä¸ï¼å¯ä»¥çå°ï¼éªè¯éè¦æä¾çåºæ¬åè½å°±å æ¬äºéªè¯åéªè¯å¤±è´¥åçæç»æå¡ä¸¤ä¸ªæä½ãå¨ ASP.NET Core ä¸ï¼éªè¯è¢«ç§°ä¸º Authenticateï¼æç»è¢«ç§°ä¸º Forbidã å¨ä¾æ¶è´¹è 访é®çç½ç«ä¸ï¼å¦ææ们å¸æå¨éªè¯å¤±è´¥åï¼ä¸æ¯å API ä¸æ ·ç´æ¥è¿åä¸ä¸ªé误页é¢ï¼èæ¯å°ç¨æ·å¯¼èªå°ç»å½é¡µé¢ï¼é£ä¹ï¼å°±è¿éè¦å¢å ä¸ä¸ªæä½ï¼è¿ä¸ªæä½çæ¬è´¨æ¯å¸æç¨æ·å次æä¾å®å ¨åæ®ï¼å¨ ASP.NET Core ä¸ï¼è¿ä¸ªæä½è¢«ç§°ä¸º Challengeãè¿ 3 个æä½ç»åå¨ä¸èµ·ï¼å°±æ¯éªè¯æåºæ¬çè¦æ±ï¼ä»¥æ¥å£å½¢å¼è¡¨ç¤ºï¼å°±æ¯ IAuthenticationHandler æ¥å£ï¼å¦ä¸æ示ï¼
éªè¯çç»ææ¯ä¸ä¸ª AuthenticateResult 对象ãå¼å¾æ³¨æçæ¯ï¼å®è¿æä¾äºä¸ä¸ªéææ¹æ³ NoResult() ç¨æ¥è¿å没æå¾å°ç»æï¼éææ¹æ³ Fail() çæä¸ä¸ªè¡¨ç¤ºéªè¯å¼å¸¸çç»æï¼è Success() æååéè¦æä¾éªè¯ç¥¨æ®ã
éè¿éªè¯ä¹åï¼ä¼è¿åä¸ä¸ªå å«äºè¯·æ±è 票æ®çéªè¯ç»æã
å¨ GitHub ä¸æ¥ç AuthenticateResult æºç
é£ä¹éªè¯çä¿¡æ¯æ¥èªåªéå¢ï¼é¤äºåé¢ä»ç»ç 3 个æä½ä¹å¤ï¼è¿è¦æ±ä¸ä¸ªåå§åçæä½ Initializeï¼éè¿è¿ä¸ªæ¹æ³æ¥æä¾å½å请æ±çä¸ä¸æä¿¡æ¯ã
å¨ GitHub ä¸æ¥ç IAuthenticationHandler å®ä¹
æçæ¶åï¼æ们è¿å¸ææä¾ç»åºæä½ï¼å¢å ç»åºæä½çæ¥å£è¢«ç§°ä¸º IAuthenticationSignOutHandlerã
å¨ GitHub ä¸æ¥ç IAuthenticationSignOutHandler æºç
å¨ç»åºçåºç¡ä¸ï¼å¦æè¿å¸ææä¾ç»å½æä½ï¼é£ä¹å°±æ¯ IAuthenticationSignInHandler æ¥å£ã
å¨ GitHub ä¸æ¥ç IAuthenticationSignInHandler æºç
ç´æ¥å®ç°æ¥å£è¿æ¯æ¯è¾éº»ç¦çï¼å¨å½åç©ºé´ Microsoft.AspNetCore.Authentication ä¸ï¼å¾®è½¯æä¾äºæ½è±¡åºç±» AuthenticationHandler 以æ¹ä¾¿éªè¯æ§å¶å¨çå¼åï¼å ¶å®æ§å¶å¨å¯ä»¥ä»è¯¥æ§å¶å¨æ´¾çï¼ä»¥åå¾å ¶æä¾çæå¡ã
éè¿ç±»çå®ä¹å¯ä»¥çå°ï¼å®ä½¿ç¨äºæ³åãæ¯ä¸ªæ§å¶å¨åºè¯¥æä¸ä¸ªå¯¹åºè¯¥æ§å¶å¨çé ç½®é项ï¼éè¿æ³åæ¥æå®éªè¯å¤çå¨æ使ç¨çé 置类åï¼å¨æé å½æ°ä¸ï¼å¯ä»¥çå°å®è¢«ç¨äºè·å对åºçé ç½®é项对象ã
å¨ GitHub ä¸æ¥ç AuthenticationHandler æºç
éè¿ InitializeAsync()ï¼éªè¯å¤çå¨å¯ä»¥è·å¾å½å请æ±çä¸ä¸æ对象 HttpContextã
æç»ï¼ä½ä¸ºæ½è±¡ç±»ç ï¼å¸ææ´¾çç±»æ¥å®æè¿ä¸ªéªè¯ä»»å¡ï¼æ½è±¡æ¹æ³ HandleAuthenticateAsync() æä¾äºæ©å±ç¹ã
éªè¯çç»ææ¯ä¸ä¸ª AuthenticateResultã
èæç»æå¡åç®åçå¤ï¼ç´æ¥å¨è¿ä¸ªæ½è±¡åºç±»ä¸æä¾äºé»è®¤å®ç°ãç´æ¥è¿å HTTP ã
å©ä¸çä¸ä¸ªä¹ä¸æ ·ï¼æä¾äºé»è®¤å®ç°ãç´æ¥è¿å HTTP ååºã
å¯¹äº JWT æ¥è¯´ï¼å¹¶ä¸æ¶åå°ç»å ¥åç»åºï¼æ以å®éè¦ä»å®ç° IAuthenticationHandler æ¥å£çæ½è±¡åºç±» AuthenticationHandler æ´¾çåºæ¥å³å¯ãä» AuthenticationHandler æ´¾çåºæ¥ç JwtBearerHandler å®ç°åºäºèªå·±çé ç½®é项 JwtBearerOptionsãæ以该类å®ä¹å°±åå¾å¦ä¸æ示ï¼èæé å½æ°æ¾ç¶é åäºæ½è±¡åºç±»çè¦æ±ã
å¨ GitHub ä¸æ¥ç JwtBearerHandler æºç
çæ£çéªè¯åå¨ HandleAuthenticateAsync() ä¸å®ç°ãä¸é¢ç代ç æ¯ä¸æ¯å°±å¾çæäºï¼ä»è¯·æ±å¤´ä¸è·åé带ç JWT 访é®ä»¤çï¼ç¶åéªè¯è¯¥ä»¤ççæææ§ï¼æ ¸å¿ä»£ç å¦ä¸æ示ã
å¨ GitHub ä¸æ¥ç JwtBearerHandler æºç
å¨ ASP.NET Core ä¸ï¼ä½ å¯ä»¥ä½¿ç¨åç§éªè¯å¤çå¨ï¼å¹¶ä¸ä» ä» åªè½ä½¿ç¨ä¸ä¸ªï¼éªè¯æ§å¶å¨éè¦ä¸ä¸ªå称ï¼å®è¢«çä½è¯¥éªè¯æ¨¡å¼ Schema çå称ãJwt éªè¯æ¨¡å¼çé»è®¤åç§°å°±æ¯ "Bearer"ï¼éè¿å符串常é JwtBearerDefaults.AuthenticationScheme å®ä¹ã
å¨ GitHub ä¸æ¥ç JwtBearerDefaults æºç
æç»éè¿ AuthenticationBuilder çæ©å±æ¹æ³ AddJwtBearer() å° Jwt éªè¯æ§å¶å¨æ³¨åå°ä¾èµæ³¨å ¥ç容å¨ä¸ã
å¨ GitHub ä¸æ¥ç JwtBearerExtensions æ©å±æ¹æ³æºç
ä¸ç§éªè¯å¤çå¨ï¼å ä¸å¯¹åºçéªè¯é ç½®é项ï¼æ们å为å®èµ·ä¸ä¸ªååï¼ç»åèµ·æ¥å°±æ为ä¸ç§éªè¯æ¶æ Schemaãå¨ ASP.NET Core ä¸ï¼å¯ä»¥æ³¨åå¤ç§éªè¯æ¶æãä¾å¦ï¼ææçç¥å¯ä»¥ä½¿ç¨æ¶æçå称æ¥æå®æ使ç¨çéªè¯æ¶ææ¥ä½¿ç¨ç¹å®çéªè¯æ¹å¼ãå¨é ç½®éªè¯çæ¶åï¼é常设置é»è®¤çéªè¯æ¶æãå½æ²¡ææå®éªè¯æ¶æçæ¶åï¼å°±ä¼ä½¿ç¨é»è®¤æ¶æè¿è¡å¤çã
è¿å¯ä»¥
注åçéªè¯æ¨¡å¼ï¼æç»åæ AuthenticationSchemeï¼æ³¨åå°ä¾èµæ³¨å ¥æå¡ä¸ã
å¨ GitHub ä¸æ¥ç AuthenticationScheme æºç
åç§éªè¯æ¶æ被ä¿åå°ä¸ä¸ª IAuthenticationSchemeProvider ä¸ã
å¨ GitHub ä¸æ¥ç IAuthenticationSchemeProvider æºç
æç»ç使ç¨æ¯éè¿ IAuthenticationHandlerProvider æ¥å®ç°çï¼éè¿ä¸ä¸ªéªè¯æ¨¡å¼çå符串å称ï¼å¯ä»¥åå¾æ对åºçéªè¯æ§å¶å¨ã
å¨ GitHub ä¸æ¥ç IAuthenticationHandlerProvider æºç
å®çé»è®¤å®ç°æ¯ AuthenticationHandlerProviderï¼æºç 并ä¸å¤æã
å¨ GitHub ä¸æ¥ç AuthenticationHandlerProvider æºç
éªè¯ä¸é´ä»¶çå¤ç就没æé£ä¹å¤æäºã
æ¾å°é»è®¤çéªè¯æ¨¡å¼ï¼ä½¿ç¨é»è®¤éªè¯æ¨¡å¼çå称åå¾å¯¹åºçéªè¯å¤çå¨ï¼å¦æéªè¯æåçè¯ï¼æå½å请æ±ç¨æ·ç主ä½æ¾å°å½å请æ±ä¸ä¸æç User ä¸ã
éé¢è¿æä¸æ®µç¹å«ç代ç ï¼ç¨æ¥æ¾åºåªäºéªè¯å¤çå¨å®ç°äº IAuthenticationHandlerProviderï¼å¹¶ä¾æ¬¡è°ç¨å®ä»¬ï¼ççæ¯å¦éè¦æåç»æ¢è¯·æ±å¤çè¿ç¨ã
å¨ GitHub ä¸æ¥ç AuthenticationMiddle æºç