前言
事情的起点就在于我在弄ASP .NET Core下的OAuth2.0流程,想要看看具体的Cookie信息有哪些,发现Cookie信息被加密了,检索了一番,发现了解决办法 如何解密Cookie ,然后顺便找了一下原理。
如何解密Cookie
主要代码来源:How to manually decrypt an ASP.NET Core Authentication cookie?
事情的起点就在于我在弄ASP .NET Core下的OAuth2.0流程,想要看看具体的Cookie信息有哪些,发现Cookie信息被加密了,检索了一番,发现了解决办法 如何解密Cookie ,然后顺便找了一下原理。
主要代码来源:How to manually decrypt an ASP.NET Core Authentication cookie?
看这文章之前需要先对JWT有了解,不过这部分已经有很多很好的文章,这边我就不再叙述,你可以看如 ASP.NET Core 认证与授权4:JwtBearer认证 前面的介绍。
这里我按照正常项目那样,分成两个项目,JWT.Server项目负责生成JWT,JWT.DemoApi则负责提供Api接口服务对于受限接口会验证JWT。
MiniProfiler 是一款针对 .NET、Ruby、Go 与 Node.js 的性能分析的轻量级程序。可以对一个页面本身,及该页面通过 直接引用、Ajax、Iframe 形式访问的其它页面进行监控,监控内容包括数据库内容,并可以显示数据库访问的 SQL(支持 EF、EF Core 等 )。并且以很友好的方式展现在页面上。
以下例子主要来源ASP.NET Core 3.1版本,后续版本可能会有所更改,请注意。
各版本区别既更多有关Configuration的信息,可以查看官方文档:Configuration in ASP.NET Core
ASP.NET Core 的配置遵循“约定大于配置”,是由一系列Configuration providers
提供组合而成的。
ASP.NET Core Web应用,在建立引用服务前,会使用Host.CreateDefaultBuilder
方法依次加载Configuration providers
,顺序如下:
IConfiguration
作为源。 在ASP.NET Core Web默认配置中,添加 Host 配置,并将它设置为应用配置的第一个源。appsettings.json
。appsettings.{Environment}.json
提供 。 例如,appsettings.Production.json 和 appsettings.Development.json 。Development
环境中运行时,会加载“用户机密”的配置。系统环境变量
的配置。命令行参数
的配置。后来添加的配置会替代之前的配置。如:在appsettings.json
中配置了"Name":"Joe"
,然后在命令行传了参数"Name":"Jack"
,那最终使用的就为后面的"Name":"Jack"
。
Caching通过减少生成内容所需的工作,显著提高应用的性能和可伸缩性。 Caching最适用于不经常更改且 生成成本高 的数据。 Caching可比从源返回快得多的数据副本。
ASP.NET Core支持多个不同的缓存
尽可能将您的服务注册为瞬态服务。 因为设计瞬态服务很简单。 您通常不用关心多线程和内存泄漏,并且您知道该服务的寿命很短。
请谨慎使用Scoped,因为如果您创建子服务作用域或从非Web应用程序使用这些服务,则可能会非常棘手。
谨慎使用Singleton,因为您需要处理多线程和潜在的内存泄漏问题。
在Singleton服务中不要依赖Transient或者Scoped服务,因为如果当一个Singleton服务注入Transient服务,这个Transient服务就会变成一个Singleton服务,并且如果Transient服务不是为支持这种情况而设计的,则可能导致问题。 在这种情况下,ASP.NET Core的默认DI容器已经抛出异常。