【问题标题】:check if All routes is authentificated netcore 3.1检查所有路由是否经过身份验证 net core 3.1
【发布时间】:2020-12-10 10:31:02
【问题描述】:

我需要找到一个开源程序来检查我的 mvc 应用程序 (net core 3.1 ) 的所有路由是否都经过身份验证。

感谢您的帮助

【问题讨论】:

  • 这样做的目的是什么?如果您担心您可能忘记在端点上要求身份验证,您应该将其配置为启动中的默认值
  • 在我的应用程序中,我有必须提交身份验证的路由,而其他路由则不需要,我只是想检查一下
  • 但是检查的目的是什么?
  • 添加缺少的授权

标签: c# asp.net-core-mvc asp.net-core-3.1


【解决方案1】:

这个问题并不清楚,但我感觉你真正在寻找的是一种确保你不会“意外”忘记让路由需要身份验证的方法。做到这一点的最好方法是默认要求在任何地方进行身份验证,然后专门选择哪个路由不需要身份验证。

在 ASP.Net Core 中,您可以使用默认授权策略来执行此操作:

// Startup.cs - ConfigureServices
services.AddAuthorization(options =>
{
    options.DefaultPolicy = new AuthorizationPolicyBuilder()
        .RequireAuthenticatedUser()
        .Build();
});

现在,任何地方都需要身份验证。

如果您想允许公共访问某些路由,您将使用特定路由上的属性对其进行配置:

[AllowAnonymous]
public class PublicController : Controller
{
    // ...
}

...或针对特定操作:

public class SomeController : Controller
{
    [AllowAnonymous]
    public IActionResult PublicAction()
    {
        return View();
    }
}

【讨论】:

    【解决方案2】:

    将启动时添加的控制器更改为:

    services.AddControllers(o =>
    {
        var policy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .Build();
    
        o.Filters.Add(new AuthorizeFilter(policy));
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 2013-04-30
      • 1970-01-01
      • 2018-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多