【发布时间】:2020-09-25 16:00:58
【问题描述】:
我有一个关于中间件和授权处理程序执行顺序的问题。在我的 ASP.NET Core 3.1 中,我按此顺序注册了中间件
- A、UseAuthentication、UseAuthorisation、B、UseHealthChecks
但是当实际请求被执行时,我有这个命令
- A,AuthenticationHandler,B,AuthorisationHandler
当我将注册中的 B 和健康检查的顺序更改为
- A、UseAuthentication、UseAuthorisation、UseHealthChecks、B
执行请求时我有这个命令
- A、AuthenticationHandler、AuthorisationHandler、B
有人可以解释为什么顺序是这样的吗?
更新: 我已经创建了测试仓库https://github.com/bigdnf/Playgraund2/blob/master/WebApplication6/WebApplication6/Startup.cs
但我发现了一件事。我的运行状况检查内部有 UseEndpoint,之后没有执行任何中间件,所以现在很清楚了。但现在的问题只是为什么在所有中间件之后执行授权中间件。我可以在它之后执行中间件还是这是 ASP.NET Core 中的设计?
【问题讨论】:
-
能否请您发布有关您的 B 中间件的详细代码?我自己创建了一个测试演示,效果很好。
-
@BrandoZhang 我已经创建了测试仓库——有些事情现在很清楚,但还有一个问题。
标签: asp.net-core middleware asp.net-authorization asp.net-core-middleware