授权中间件与过滤器Asp.net核心的关系

Relation between Authorization middleware and filter Asp.net core

我正在观看有关 Asp .net 核心的教程,我想知道过滤器和中间件之间的区别,经过一些研究,我找到了问题的答案,即中间件管道在过滤器管道之前进行。但我面对奇怪的情况! 当我在任何操作方法之前使用 [Authorize] 时,因为它是一个过滤器,使用身份验证和授权中间件的目的是什么?因为过滤器是在中间件之后执行的。

我的意思是主要问题是,在任何操作方法之前使用[Authorize]时,使用身份验证和授权中间件的目的是什么以及处理请求的流程是什么?

你对概念有误解。

中间件是放置在应用程序管道中以处理请求和响应的一段代码。

过滤器不是中间件,它是一段代码,可以在 UseEndpoints 中间件(razor 页面或控制器)的特定阶段之前或之后 运行。您可以将过滤器视为放置在处理端点的较小管道中的半中间件。

我建议您参考 Filters and Middleware 了解更多信息。

实际上,授权过滤器是授权中间件职责的一部分。如果缺少授权中间件将无法运行,运行时会抛出异常。

每当 HTTP 请求到来时,它都会通过中间件管道。身份验证中间件将使用先前配置的身份验证方案(例如 cookie 或令牌)对用户(已发送请求)进行身份验证。然后,授权中间件将比较提供的令牌或 cookie 中存在的用户声明与通过 [Authorize] 属性指定的安全要求。如果授权失败,将过滤掉HTTP请求,并阻止访问请求的操作方法。

这是关于工作原理的总结,希望对您有所帮助!