C# ASP.NET Core2-基于策略的Azure AD安全

C# ASP.NET Core2-基于策略的Azure AD安全,c#,azure-active-directory,asp.net-core-2.2,C#,Azure Active Directory,Asp.net Core 2.2,我正在尝试使用此处的引用实现基于策略的权限: 这是一个新的.NetCore2项目,我不知道这个错误意味着什么。我已尝试添加.AddTransient或.addScope,但无效 启动配置部分 services.AddAuthentication(AzureADDefaults.AuthenticationScheme) .AddAzureAD(options => Configuration.Bind("AzureAd", options)); se

我正在尝试使用此处的引用实现基于策略的权限:

这是一个新的.NetCore2项目,我不知道这个错误意味着什么。我已尝试添加.AddTransient或.addScope,但无效

启动配置部分

    services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
        .AddAzureAD(options => Configuration.Bind("AzureAd", options));
        services.AddMvc()
            .SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

        services.AddAuthorization(options =>
        {
            options.AddPolicy("AtLeast3Years",
              policy => policy
                .Requirements
                .Add(new ExperienceRequirement(3)));
        });

        services.AddSession();

        services.AddEditor();

        services.AddSingleton<IAuthenticationHandler, ExperienceHandler>();
处理者

public class ExperienceHandler : AuthorizationHandler<ExperienceRequirement>
{

protected override Task HandleRequirementAsync(
      AuthorizationHandlerContext context,
      ExperienceRequirement requirement)
    {
        context.Succeed(requirement);

        return Task.CompletedTask;
    }
}
错误


“ConsumerWebCore.Filters.ExperienceHandler”不能用作泛型类型或方法“ServiceCollectionServiceExtensions.AddSingletonIServiceCollection”中的类型参数“TImplementation”。没有从“ConsumerWebCore.Filters.ExperienceHandler”到“Microsoft.AspNetCore.Authentication.IAAuthenticationHandler”的隐式引用转换。ConsumerWebCore

我想您是想将其注册为IAuthorizationHandler

services.AddSingleton<IAuthorizationHandler, ExperienceHandler>();

它是一个授权处理程序,而不是身份验证处理程序

朱纳斯先生,你是个明星,你不知道我在这上面浪费了多少时间。
services.AddSingleton<IAuthorizationHandler, ExperienceHandler>();