向默认 [授权] 策略添加要求

时间:2021-03-14 17:19:20

标签: c# asp.net-core

在 ASP.Net Core 中,您可以将自定义策略添加到 .AddAuthorization

但是,我需要向默认策略添加一个要求,因为它将在每个请求中使用。有没有一种方法可以做到这一点,而不必创建自定义策略并始终使用 [Authorize("Policy")] 指定它?

services.AddAuthorization(options =>
            {
                options.AddPolicy("Unexpired",
                    policy => policy.Requirements.Add(new <requirement>));
            ...

有没有办法让这个政策成为默认政策的一部分?

1 个答案:

答案 0 :(得分:1)

在 ASP.NET Core 5 中,它可能是您正在寻找的 optionDefaultPolicy

var unexpiredPolicy = new AuthorizationPolicyBuilder()
    .RequireAuthenticatedUser() // Remove if you don't need the user to be authenticated
    .AddRequirements(new MyRequirement())
    .Build();
services.AddSingleton<IAuthorizationHandler, MyRequirementHandler>();

services.AddAuthorization(options =>
{
    // This line can be omitted if you don't need to be
    // able to explicitly set the policy
    options.AddPolicy("Unexpired", unexpiredPolicy);

    // If no policy specified, use this
    options.DefaultPolicy = unexpiredPolicy;
});
相关问题