【问题标题】:core identity: AuthorizationPolicy named was not found核心身份:未找到命名的 AuthorizationPolicy
【发布时间】:2019-01-17 07:19:50
【问题描述】:

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

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)

【问题讨论】:

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


    【解决方案1】:

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

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

    services.AddAuthorization(o =>
    {
        o.AddPolicy("FirstStepCompleted", policy => policy.RequireClaim("FirstStepCompleted"));
        o.AddPolicy("Authorized", policy => policy.RequireClaim("Authorized"));
    });
    

    【讨论】:

      猜你喜欢
      • 2020-01-25
      • 1970-01-01
      • 2019-03-12
      • 2018-09-17
      • 1970-01-01
      • 1970-01-01
      • 2019-03-24
      • 1970-01-01
      • 2021-05-28
      相关资源
      最近更新 更多