【问题标题】:Complex conditions (AND/OR) in the new authorization model - ASP.NET Core?新授权模型中的复杂条件 (AND/OR) - ASP.NET Core?
【发布时间】:2017-11-07 21:03:50
【问题描述】:

当需要处理复杂的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 条件的授权处理程序,但我觉得这还不够(在我的示例中,我认为我不能为(B) | (C & D & E) | (C & F) 创建一个包含 3 个授权处理程序的要求,因为会太笨重,特别是如果由于业务模型规则将这些条件放在一起没有意义)。

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

还有其他方法可以处理这些情况吗?是否有一般规则如何将复杂性分解成小块来解决此类问题?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    猜你喜欢
    • 2017-06-26
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 2015-09-16
    • 1970-01-01
    相关资源
    最近更新 更多