用于检查用户操作权限的模式

时间:2017-12-14 08:13:39

标签: oop design-patterns domain-driven-design

尝试找到检查用户可以执行的权限/操作的便捷方法。我有几个选择,但必须说我觉得必须有一个更好的方式。

问题:

  1. 用户可以执行X操作/操作。每个都由唯一的字符串键标识,如:list_thisupdate_thatcreate_thisdelete_that等...

  2. 用户分配了不同的Package,每个包都允许他们执行某些操作。例如,分配了Package X后,他们就可以执行action_X

  3. User包含用户已分配的Package个集合。

  4. 我希望User.CanPerformAction(string actionKey)之类的内容会返回boolean,表明是否允许操作。 该方法将通过收集包并检查是否允许actionKey。 我想避免的是手动迭代并检查Users类。相反,Package之类的内容会使用CanPerformAction(string actionKey)实现一些界面。

    我的第一次尝试是使用策略模式,但是那个似乎更适合在不同的实现类上运行完全相同的方法(签名方式)。 下一个就像责任链一样,但在这种情况下,对包裹进行链接并没有多大意义。

    它几乎与Users类一样,应该有方法AddPackage,这反过来会将每个包中允许的操作填充到某个私有string[]然后User.CanPerformAction(string actionKey)做一些像actionsCollection.Contain(actionKey)

    有没有更好的方法以DDD方式实现这一点?我错过了什么吗?

0 个答案:

没有答案