何时在 ASP.NET Core 中使用 AuthorizeFilter

When to use AuthorizeFilter in ASP.NET Core

我已经开始研究 ASP.NET 核心,尤其是授权。模型发生了很大变化,我必须说,与上次实施相比,我发现它有点混乱。

我看到很多帖子抱怨现在无法将参数传递给 Authorization 属性构造函数,取而代之的是 Policy/Requirement/Handler.

那么 AuthorizeFilter 的用户案例到底是什么?它与 AuthorizeAttribute 有何不同?我应该什么时候实施 Requirement/Handler 以及什么时候(或者我应该)实施 AuthorizeFilter(看起来它可能更接近旧模型)?

我无法在网上找到任何详细说明这一特定方面的资源,因此非常感谢任何启发。

AuthorizeFilter 的 class 上方的文档说:

MVC recognizes the <see cref="T:Microsoft.AspNetCore.Authorization.AuthorizeAttribute" /> 
and adds an instance of this filter to the associated action or controller.

因此,当创建控制器时,AuthorizeFilter 的实例会在存在 AuthorizeAttribute 时添加到控制器过滤器中。

基本上他们将装饰:AuthorizeAttribute 与实现:AuthorizeFilter.

分开了

因此,如果您想要干净的代码,您可以使用 AuthorizeAttribute 来装饰您的控制器 class。

如果您需要更多 understandable/logical 代码,您可以将 AuthorizeFilter 添加到控制器构造函数方法中的过滤器。