新授权模型中的复杂条件(AND / OR) - ASP.NET Core?

时间:2017-11-07 12:33:03

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

当要处理复杂的AND/OR条件时,我在解决ASP.NET Core中的授权逻辑时遇到困难。在我的API方法获得授权之前要检查的条件示例:

A & (B | C & D & E | C & F)    - each condition consists of 1 or more checks

我知道所有可用的授权类型(包括policy-basedresource-based)。

通常,使用新的授权模型,我不确定如何处理OR条件。

我知道我可以拥有OR条件的授权处理程序,但我觉得这还不够(在我的例子中,我认为我不能用{3个授权处理程序创建一个要求{ {1}}因为过于笨重,特别是如果由于商业模式规则将这些条件合并在一起没有意义的话。

我也理解授权处理程序不能相互依赖。此外,我认为一个处理程序不能更一般地与多个需求相关联。

还有其他方法可以处理这些情况吗?是否有一般规则如何将复杂性分解为小的简单部分来解决这些问题?

1 个答案:

答案 0 :(得分:1)

我建议您创建自己的中间件+自定义属性来处理此类情况。此外,您还需要定义二进制枚举来处理此类规则:

[CustomAuthorization(GroupA.A | GroupB.A & GroupC.D))]