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

问题描述 投票:0回答:3

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

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

c# asp.net-core filter authorization middleware
3个回答
2
投票

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

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

这是关于事情如何运作的总结,希望有所帮助!


0
投票

您对这些概念有误解。

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

Filter 不是中间件,它是可以在

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

我建议您参考FiltersMiddleware了解更多信息。


0
投票
  • 身份验证中间件:对用户进行身份验证并设置 HttpContext.User。
  • 授权中间件:执行全局授权策略。
  • [授权]过滤器:确保经过身份验证的用户有权访问特定操作或控制器。
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.