如何将全局授权属性添加到 ASP.NET Core 6 MVC?

How to add global authorize attribute to ASP.NET Core 6 MVC?

我想将 [Authorize] 数据属性设置为应用程序而不是控制器

[Authorize]
public class CustomerController : Controller {}

有了这个[Authorize]我可以只为这个控制器设置权限;我想为每个控制器设置它。

到目前为止,我在 program.cs class...

中尝试了这些
var policy = new AuthorizationPolicyBuilder()
                     .RequireAuthenticatedUser()
                     .Build();

services.AddMvc(config =>
{
    config.Filters.Add(new AuthorizeFilter(policy));
});

两者均无效 - 它构建了应用程序,但在浏览器上无法访问网站。那么如何在 .NET 6 中全局设置此属性?

builder.services.AddMvc(options => options.Filters.add(new AuthorizeAttribute));

这会引发错误

Cannot resolve method 'Add(Microsoft.AspNetCore.Authorization.AuthorizeAttribute)'

您可以试试这些代码:

services.AddAuthorization(options =>

            {
                options.FallbackPolicy = new AuthorizationPolicyBuilder()
                    .RequireAuthenticatedUser()
                    .Build();
            });

在 ASP.NET Core 6.0 中执行此操作的方法略有不同。 Microsoft Docs 有一篇文章展示了执行此操作的两种方法:Create an ASP.NET Core app with user data protected by authorization - Require authenticated users.

选项 1 - 本文称之为“首选方式”- 将以下代码添加到您的 Program.cs 文件中:

builder.Services.AddAuthorization(options =>
{
    options.FallbackPolicy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
});

选项 2 - 文章展示了使用授权过滤器的替代方法:

builder.Services.AddControllers(config =>
{
    var policy = new AuthorizationPolicyBuilder()
                     .RequireAuthenticatedUser()
                     .Build();
    config.Filters.Add(new AuthorizeFilter(policy));
});