【发布时间】:2014-04-25 15:05:21
【问题描述】:
与我的应用程序的域逻辑一起,我试图概述安全模型。我坚持一个要求,使我无法将安全性视为对我的域逻辑的横切关注点。以下是我的情况。
我的系统中的用户可能被允许创建某种对象,例如“过滤器”。我引入了一个名为“CREATE_FILTER”的权限,用户是否可以创建过滤器,这取决于管理员是否为该用户分配了这样的权限。好的。
现在考虑一个更复杂的要求,即用户可以创建的过滤器数量有限。所以,例如管理员应该能够设置允许任何用户创建的过滤器的最大数量,或者更复杂的是,将最大数量单独分配给用户,例如 User1 的值为 3,User2 的值为 5,依此类推。因此,为了授权用户创建过滤器,安全系统不足以检查用户是否分配了这样的权限,而是必须以复杂的方式分析域模型以查看有多少过滤器已经由用户创建来做出决定。为了使事情变得更复杂,我们可以想象最大限制将取决于用户在其帐户中的金额或其他东西。
我想从概念上分离(至少在我看来),这样一个复杂的安全逻辑是否纯粹与安全有关(这当然取决于域模型)还是这已经是域逻辑的成熟部分本身?当分配/删除权限没有多大帮助时(因为它的域状态取决于授权决策而不是分配的权限),保持“权限”概念是否有意义?比如说,拥有一个复杂的许可概念,它不是简单地通过其存在的事实来允许一个动作,而是涉及一些复杂的决策逻辑,这是否是一种方法?
【问题讨论】:
标签: security domain-driven-design