Asp.net core 默认情况下需要Api控制器中的所有策略

Asp.net core 默认情况下需要Api控制器中的所有策略,asp.net-core,authorization,asp.net-authorization,Asp.net Core,Authorization,Asp.net Authorization,我不知道这听起来是否愚蠢,但我有点担心控制器中如何进行授权 现在我正在使用[Authorize]属性来保护我的端点。但是,我有点担心我忘记添加策略,任何人都可以访问终点 是否有任何方法可以在默认情况下应用所有策略并仅为您希望允许的策略添加属性?在Asp.Net Core 2.x中,您可以使用筛选器设置全局授权属性: services.AddMvc(options => { // This requires an authenticated user for all controll

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

现在我正在使用[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.NETCore3.x中引入了端点路由。启用后,您可以按端点设置此选项,如中所述:

使用可能的端点配置:

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

未询问,但建议:。

授权策略由一个或多个要求组成。在
Startup.ConfigureServices
方法中将其注册为授权服务配置的一部分。然后,使用带有策略名称的
[Authorize(Policy=“PolicyName”)]
属性将策略应用于控制器。我知道这是怎么回事。我就是这么用的。但是,我更喜欢默认提供安全性的东西。我的意思是,没有[Authorize]属性的控制器应该不允许访问任何操作。然后,稍后我将向方法添加一个属性,以表示我希望允许具有策略X的用户使用该方法。默认情况下,控制器允许无限制地访问任何控制器操作。我只想让事情反过来。
app.UseEndpoints(endpoints =>
{
    // equivalent of [Authorize] attribute on each controller:
    endpoints.MapDefaultControllerRoute().RequireAuthorization();
});