默认情况下需要 Api 个控制器中的所有策略

Require all policies by default in Api Controllers

我不知道这听起来是否愚蠢,但我有点担心在 Controllers 中如何进行授权。

现在我正在使用 [Authorize] 属性来保护我的端点。但是,我有点担心我忘记添加策略,任何人都可以访问端点。

有没有什么方法可以默认应用所有策略,只为您要允许的策略添加一个属性?

在 Asp.Net Core 2.x 中,您可以使用过滤器来设置全局授权属性:

services.AddMvc(options =>
{
    // This requires an authenticated user for all controllers/actions, 
    // except when at controller/action the [AllowAnonymous] attribute is set.
    var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build();
    options.Filters.Add(new AuthorizeFilter(policy));

    // In the same way you can set a global AntiforgeryToken
    options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

在Asp.Net核心中引入了3.x端点路由。启用后,您可以按照 migration documentation:

中的描述对每个端点进行设置
services.AddControllersWithViews(options =>
{
    options.Filters.Add(new AutoValidateAntiforgeryTokenAttribute());
}).SetCompatibilityVersion(CompatibilityVersion.Version_3_0)

可能的端点配置:

app.UseEndpoints(endpoints =>
{
    // equivalent of [Authorize] attribute on each controller:
    endpoints.MapDefaultControllerRoute().RequireAuthorization();
});

未询问,但推荐:Automatically validate antiforgery tokens for unsafe HTTP methods only