核心身份:找不到名为AuthorizationPolicy的

时间:2019-01-17 07:19:51

标签: c# asp.net-core-mvc asp.net-identity asp.net-core-identity

我想为两步授权添加自定义策略,因此在第一步之后,用户将可以访问第二步,之后可以访问所有内容。当我有一个策略时,一切正常,但是当我添加另一个策略时,我开始出现此错误。我如何添加政策:

AuthorizationOptions authOptions = new AuthorizationOptions();

authOptions.AddPolicy("FirstStepCompleted", policy => policy.RequireClaim("FirstStepCompleted"));
authOptions.AddPolicy("Authorized", policy => policy.RequireClaim("Authorized"));

services.AddAuthorization(o => o = authOptions);

当我有一项政策时,我会这样添加它:

services.AddAuthorization
(
    options => options.AddPolicy("FirstStepCompleted",
    policy => policy.RequireClaim("FirstStepCompleted"))
);

我在做什么错了?

UPD1。忘记例外:

  

处理请求时发生未处理的异常。   InvalidOperationException:找不到名为“ FirstStepCompleted”的AuthorizationPolicy。   Microsoft.AspNetCore.Authorization.AuthorizationPolicy.CombineAsync(IAuthorizationPolicyProvider policyProvider,IEnumerable authorizeData)

1 个答案:

答案 0 :(得分:2)

eval调用接受一个委托,该委托将接收AddAuthorization的一个实例进行配置。在失败的示例中,您尝试用在上面创建的新实例(AuthorizationOptions 替换 AuthorizationOptions的现有实例,但没有实际效果(有关重新分配参数的更多信息,请参见Jon Skeet的answer。最终,这意味着您没有添加任何政策

如果要在委托中添加多个策略,则可以使用以下内容:

authOptions