【问题标题】:Relation between Authorization middleware and filter Asp.net core授权中间件与过滤器的关系 Asp.net core
【发布时间】:2021-08-06 08:02:29
【问题描述】:
我正在观看有关 Asp .net 核心的教程,我想知道过滤器和中间件之间的区别,经过一些研究,我找到了我的问题的答案,即中间件管道在过滤器管道之前进行。但我面临着奇怪的情况!
当我在任何操作方法之前使用 [Authorize] 时,因为它是一个过滤器,使用身份验证和授权中间件的目的是什么?因为过滤器是在中间件之后执行的。
我的意思是主要的问题是,使用认证和授权中间件的目的是什么?当我们在任何操作方法之前使用 [Authorize] 时,处理请求的流程是什么?
【问题讨论】:
标签:
c#
asp.net-core
filter
authorization
middleware
【解决方案1】:
实际上,授权过滤器是授权中间件职责的一部分。如果缺少授权中间件,它将无法工作,并且会在运行时抛出异常。
每当一个 HTTP 请求到来时,它都会通过中间件管道。身份验证中间件将使用先前配置的身份验证方案(例如 cookie 或令牌)对用户(已发送请求)进行身份验证。然后,授权中间件将比较存在于提供的令牌或 cookie 中的用户声明与通过 [Authorize] 属性指定的安全要求。如果授权失败,则会过滤掉HTTP请求,并阻止对请求的action方法的访问。
这是关于工作原理的总结,希望对您有所帮助!
【解决方案2】:
你对概念有误解。
中间件是放置在应用管道中以处理请求和响应的一段代码。
过滤器不是中间件,它是一段代码,可以在UseEndpoints 中间件(剃须刀页面或控制器)的特定阶段之前或之后运行。您可以将过滤器视为放置在处理端点的较小管道中的半中间件。
我建议您参考Filters 和Middleware 了解更多信息。