【问题标题】: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 中间件(剃须刀页面或控制器)的特定阶段之前或之后运行。您可以将过滤器视为放置在处理端点的较小管道中的半中间件。

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

      【讨论】:

        猜你喜欢
        • 2017-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-27
        • 2014-07-18
        • 1970-01-01
        • 2018-05-12
        相关资源
        最近更新 更多