【问题标题】:How to add global authorize attribute to ASP.NET Core 6 MVC?如何将全局授权属性添加到 ASP.NET Core 6 MVC?
【发布时间】:2022-03-08 06:02:40
【问题描述】:

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

[Authorize]
public class CustomerController : Controller {}

有了这个[Authorize],我只能为这个控制器设置授权;我想为每个控制器设置它。

到目前为止,我在 program.cs 类中尝试过这些...

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));

这会引发错误

无法解析方法“Add(Microsoft.AspNetCore.Authorization.AuthorizeAttribute)”

【问题讨论】:

标签: asp.net-core-mvc .net-6.0 asp.net-authorization


【解决方案1】:

在 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));
});

【讨论】:

    【解决方案2】:

    你可以试试这些代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 2018-08-19
      • 2021-03-28
      • 1970-01-01
      • 2018-11-23
      • 1970-01-01
      相关资源
      最近更新 更多