默认情况下需要 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。
我不知道这听起来是否愚蠢,但我有点担心在 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。