设计权限名称

时间:2011-09-20 09:19:32

标签: php mysql web-applications permissions authorization

我正在寻找有关为基于网络的应用程序设计权限名称的信息来源。

例如,如果我想要创建新员工成员的权限,可能会将其称为create_staffnew_employeeadd_worker或同一事物的任意数量的不同名称

此新员工权限可能需要多个“父”权限才能运作; edit_employee_nameupdate_date_of_birth等。目前,在这些“父级”权限的名称上,无法将其与子级权限区分开来。

  1. 您能否推荐一种在整个应用程序中以一致的方式设计名称的策略?
  2. 也许更重要的是,是否存在任何工具来管理权限名称的中央“列表”,可能还有权限组或嵌套,以便开发人员,数据库设计人员和人力资源工作人员知道该怎么称呼,存储什么以及它是什么呢?
  3. 我们正在使用php和MySQL进行编码,(目前正在使用phpGACL),但欢迎来自任何其他语言的方法。谢谢!

1 个答案:

答案 0 :(得分:0)

你可以从linux中找到灵感,其权利是“读”,“写”和“执行”,并将这些或类似的动词添加到你自己的名词中。 (我认为你走在正确的轨道上。)

您要搜索的字词很可能是ACL(访问控制列表)。 Zend_Acl是此模式的PHP实现,它支持非常精细的解决方案,如继承。 This article有望成为使用Zend_Acl的良好指南,即使您还不熟悉Zend Framework。 MySQL非常适合作为Zend_Acl的设计存储。

我认为您的示例看起来很好,但请记住在您的措辞中保持一致。对此的解决方案可能包括发布一个小指南或让一个人命名所有规则。


回答评论:

你真的应该和那些参与者(包括设计师和用户)讨论ACL,看看他们喜欢什么。起点可以是verb_noun(s)。确保每个规则都可以用真或假来回答,否则规则不明确。确保设计师和用户知道每个名词和动词在您的上下文中的含义,这包括域/业务逻辑。还要确保不使用可能的业务条款,例如,如果您的企业使用的组合名称可能意味着“dev-speak”中的不同内容 - 请勿使用它。另一个可以帮助的规则:避免stop words

设计师& users = devs和那些曾读过规则名称的人:)