检查所有路由是否经过身份验证 net core 3.1

check if All routes is authentificated netcore 3.1

我需要找到一个开源程序来检查我的 mvc 应用程序 (net core 3.1) 的所有路由是否被授权。

感谢您的帮助

这个问题并不清楚,但我感觉你真正在寻找的是一种确保你不会“不小心”忘记使路由需要身份验证的方法。最好的方法是默认要求在所有地方都进行身份验证,然后专门选择不需要身份验证的路由。

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

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

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

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

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

...或针对特定操作:

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

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

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

    o.Filters.Add(new AuthorizeFilter(policy));
});