我想为两步授权添加自定义策略,因此在第一步之后,用户将可以访问第二步,之后可以访问所有内容。当我有一个策略时,一切正常,但是当我添加另一个策略时,我开始出现此错误。我如何添加政策:
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)
答案 0 :(得分:2)
eval
调用接受一个委托,该委托将接收AddAuthorization
的一个实例进行配置。在失败的示例中,您尝试用在上面创建的新实例(AuthorizationOptions
替换 AuthorizationOptions
的现有实例,但没有实际效果(有关重新分配参数的更多信息,请参见Jon Skeet的answer。最终,这意味着您没有添加任何政策。
如果要在委托中添加多个策略,则可以使用以下内容:
authOptions