【发布时间】:2011-04-22 23:28:35
【问题描述】:
我正在努力实现一个类来管理我网站上的用户权限。
例如:员工可以查看客户记录,但不能查看其他任何内容,雇主可以查看客户以及管理员工,管理员可以同时执行这些操作以及管理雇主。
到目前为止,我得到的是这样的:
-
我存储了一个权限列表,例如
addCustomer、delCustomer等。每个权限都链接到一个允许执行该操作的用户角色列表。 -
我已经构建了一个简单的权限类。我正在使用它是这样的:
if ($permissions->can('addCustomer')) 回声“添加客户”; 别的 echo '不允许添加客户';
但棘手的部分是,在某些地方,我需要更具体。例如:客户已获得权限:readMsgs,允许他阅读自己与员工之间的消息。但是,如果他有该权限,那么他可以简单地将 url 更改为:
site.com/messages/read/100
到
site.com/messages/read/101
同时阅读第 101 条消息,该消息可能在另一位客户和员工之间。客户不应该能够阅读除他自己以外的任何人的消息。
同样,客户获得了editCustomer 权限,允许他通过以下方式编辑自己的个人资料:
site.com/customers/99
(其中 99 是他的客户 ID)
但如果他去 site.com/customers/100
不应允许他访问该页面。
我该如何解决这个问题?理想情况下,我希望能够将 id 传递给权限类。例如:
if (! $permissions->can('readMsg', $msgId))
echo 'not allowed';
if (! $permissions->can('editCustomer', $requestedCustomerId))
echo 'not allowed';
任何想法我必须如何重组我的班级结构以允许上述类型的事情?
【问题讨论】:
标签: oop design-patterns class-design