当要处理复杂的AND/OR
条件时,我在解决ASP.NET Core中的授权逻辑时遇到困难。在我的API方法获得授权之前要检查的条件示例:
A & (B | C & D & E | C & F) - each condition consists of 1 or more checks
我知道所有可用的授权类型(包括policy-based和resource-based)。
通常,使用新的授权模型,我不确定如何处理OR
条件。
我知道我可以拥有OR
条件的授权处理程序,但我觉得这还不够(在我的例子中,我认为我不能用{3个授权处理程序创建一个要求{ {1}}因为过于笨重,特别是如果由于商业模式规则将这些条件合并在一起没有意义的话。
我也理解授权处理程序不能相互依赖。此外,我认为一个处理程序不能更一般地与多个需求相关联。
还有其他方法可以处理这些情况吗?是否有一般规则如何将复杂性分解为小的简单部分来解决这些问题?
答案 0 :(得分:1)
我建议您创建自己的中间件+自定义属性来处理此类情况。此外,您还需要定义二进制枚举来处理此类规则:
[CustomAuthorization(GroupA.A | GroupB.A & GroupC.D))]