我正在开发一个Web应用程序,其中不同的用户组具有不同的访问权限 资源。到目前为止,我猜没什么特别的,但有一个警告; 应用程序分为“域”,以便我们的每个客户组织 有自己的内容。在这里,我使用更简单的模型来说明我的问题。
每个域名都有 相同的资源类型,但每个资源实例仅连接到一个域。 以下是一个域的结果:
Resources: stories, announcements
Roles:
guest // read only access
root // unlimited access
editor // like guest, but with r/w access to resource "stories"
admin // r/w access to both resources
我已经提出了两种使用Zend_Acl实现此方法的方法, 第一种是简单地为不同的域使用不同的ACL,复制上述内容 对于每个域。第二种是仅使用一个ACL并为每个域添加新角色:
Domains: domain0, domain1, domain2
Roles:
guest
root
editor-domain0
editor-domain1
editor-domain2
admin-domain0
admin-domain1
admin-domain2
第二种方法的优点是用户可以管理一个域 成为另一个人的编辑(可能实际发生)。但它也有缺点 角色不是静态的 - 我们需要在每次添加或删除域时生成。
这些方法中的任何一种方法是否有用,或者有更好的方法来处理多个域?
答案 0 :(得分:0)
另一个解决方案可能是继承Zend_Acl,更具体地说是方法'allow'和'deny'。
例如
allow($role, $action, $resource, $domain) {
// parent::allow($role . '-' . $domain, $action, $resource);
}
这不是那么简单,但你明白了。
我不确定你对资源实例的意思,但无论如何我都会建议它:'resource-domain',例如allow('admin','action','story-domain0')。