【发布时间】:2016-10-07 07:07:14
【问题描述】:
我想听听您对我面前的任务的看法。此外,如果有任何已知的设计模式,分享会做很多事情。
任务是创建项目的架构。
会有几种类型的用户:
- 普通用户
- 主管
- 管理员
- 自定义(这是棘手的部分)
当他们打开网页时,我需要返回用户可以访问的每个模块(页面)。
我在考虑多态性。例如,我将有一个基础用户,该用户具有受保护属性和每个新类的权限。主管,将添加更多或覆盖基本的。
每个模块都有组件(网页的一部分),获取的结果会是这样的
$modulesAccess = [
'baseModel' => array(
'componentOne',
'componentTwo',
),
]
这样,前端开发人员将知道要绘制的确切内容。
我想在数据库中制作这些模型/组件,但通过代码管理它们会更容易。多态性对我们来说已经足够好。
棘手的部分,自定义用户。这个想法是每个模型/组件都会有一个不同的 ajax 请求来返回特定的数据。每个上层用户都必须以不同的方式实现它。这很好,但是自定义用户,例如,一个主管,他只需要从管理员那里访问一个模型/组件。
你会怎么处理?
提前谢谢你。
【问题讨论】:
-
我认为在数据库级别使用Role-Based Access Control 更容易。
-
您可以使用访问控制列表和链接管理器类来根据可用页面构建用户角色。可以使用链接管理器构建任何新的自定义用户。在链接管理器中,您可以创建包含用户可以根据其角色从中选择的链接的类别。在这种情况下,您可以使用订单 ID,其中具有较低级别访问权限的用户无法选择具有较高订单 ID 的权限。
标签: php design-patterns