尝试找到检查用户可以执行的权限/操作的便捷方法。我有几个选择,但必须说我觉得必须有一个更好的方式。
问题:
用户可以执行X操作/操作。每个都由唯一的字符串键标识,如:list_this
,update_that
,create_this
,delete_that
等...
用户分配了不同的Package
,每个包都允许他们执行某些操作。例如,分配了Package X
后,他们就可以执行action_X
。
类User
包含用户已分配的Package
个集合。
我希望User.CanPerformAction(string actionKey)
之类的内容会返回boolean
,表明是否允许操作。
该方法将通过收集包并检查是否允许actionKey
。
我想避免的是手动迭代并检查Users
类。相反,Package
之类的内容会使用CanPerformAction(string actionKey)
实现一些界面。
我的第一次尝试是使用策略模式,但是那个似乎更适合在不同的实现类上运行完全相同的方法(签名方式)。 下一个就像责任链一样,但在这种情况下,对包裹进行链接并没有多大意义。
它几乎与Users
类一样,应该有方法AddPackage
,这反过来会将每个包中允许的操作填充到某个私有string[]
然后User.CanPerformAction(string actionKey)
做一些像actionsCollection.Contain(actionKey)
。
有没有更好的方法以DDD方式实现这一点?我错过了什么吗?