我以这种方式配置我的授权方法: services.AddAuthorization(options => { options.AddPolicy("Branch", policy => policy.RequireClaim(ClaimTypes.Role, "Admin")); });这与我在控制器中的“分支”策略完美配合。我需要实现的是允许多个声明要求..即使只满足其中一个要求,也会进行身份验证。我通过添加 BranchManager Claim 来尝试这种方式。但这不起作用。 services.AddAuthorization(options => { options.AddPolicy("Branch", policy => policy.RequireClaim(ClaimTypes.Role, "Admin")); options.AddPolicy("Branch", policy => policy.RequireClaim(ClaimTypes.Role, "BranchManager")); });我还尝试连接 RequireClaim 语句。 services.AddAuthorization(options => { options.AddPolicy("Branch", policy => policy.RequireClaim(ClaimTypes.Role, "Admin") .RequireClaim(ClaimTypes.Role, "BranchManager")); });而且它也不起作用,因为系统期望“Admin”和“BranchManager”声明都已声明。有没有一种优雅的方法来实现这一点:如果至少满足一个要求则授权?
1 回答
红颜莎娜
TA贡献1842条经验 获得超12个赞
如果您深入研究 Microsoft.AspNetCore.Authorization.AuthorizationPolicyBuilder 的源代码,您将看到该方法有一个像这样的版本
公共 AuthorizationPolicyBuilder RequireClaim(string ClaimType, IEnumerable requiredValues);
第二个参数必须是您所追求的值的 IEnumerable。
options.AddPolicy("Branch", policy => policy.RequireClaim(ClaimTypes.Role, new List<string> {"Admin", "BranchManager" }));
- 1 回答
- 0 关注
- 71 浏览
添加回答
举报
0/150
提交
取消