【发布时间】:2021-03-28 06:46:03
【问题描述】:
我有一份在系统中执行某些操作所需的声明列表。我有一个策略列表来验证这些声明是否存在以执行某些操作。这一切都按预期工作。
如果另一个声明具有特定价值,我想做的是忽略这些声明的检查。例如,我有这些政策:
options.AddPolicy("AdjustmentFundAdmin", policy => {
policy.RequireClaim("AdjustmentFundAdmin");
});
options.AddPolicy("ManifestApprover", policy => {
policy.RequireClaim("ManifestApprover");
});
options.AddPolicy("InvoiceProcessor", policy => {
policy.RequireClaim("InvoiceProcessor");
});
但我想做的是如果有声明/值:policy.RequireClaim("manna_tms_userlevel", "magician") 然后忽略策略中的这些声明检查。
我尝试添加多个,但似乎只需要两者而不是其中一个。
options.AddPolicy("AdjustmentFundAdmin", policy => {
policy.RequireClaim("AdjustmentFundAdmin");
policy.RequireClaim("manna_tms_userlevel", "magician");
});
【问题讨论】:
-
docs.microsoft.com/en-us/aspnet/core/security/authorization/… 在为什么我需要多个处理程序来满足一个需求?
-
嗯,有道理!当我之前尝试阅读它时,我不明白它是如何组合在一起的:)谢谢@TonyHopkinson
标签: c# asp.net-identity asp.net-core-3.1 claims-based-identity asp.net-authorization