Zend_Acl,角色和权限存储在数据库中

Ibr*_*mar 5 acl zend-framework zend-acl

我想为我的应用程序构建一个具有以下要求的ACL系统.

  1. 将为用户分配单个或多个角色.(管理员,员工)等
  2. 角色将拥有权限.(Send_Invoices,Send_mail,Delete_Invoices,Send_Estimate)等.
  3. 除了继承的角色之外,将为用户分配自定义权限.

我的ACL数据库结构如下

role:
+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| roleName | varchar(50) | NO   | UNI | NULL    |                |
+----------+-------------+------+-----+---------+----------------+
permission:
+----------------+-------------+------+-----+---------+----------------+
| Field          | Type        | Null | Key | Default | Extra          |
+----------------+-------------+------+-----+---------+----------------+
| id             | int(11)     | NO   | PRI | NULL    | auto_increment |
| permissionName | varchar(50) | NO   |     | NULL    |                |
| permissionKey  | varchar(50) | NO   | UNI | NULL    |                |
+----------------+-------------+------+-----+---------+----------------+
role_permission
+---------------+---------+------+-----+---------+----------------+
| Field         | Type    | Null | Key | Default | Extra          |
+---------------+---------+------+-----+---------+----------------+
| id            | int(11) | NO   | PRI | NULL    | auto_increment |
| role_id       | int(11) | NO   | MUL | NULL    |                |
| permission_id | int(11) | NO   |     | NULL    |                |
+---------------+---------+------+-----+---------+----------------+
user_role
+---------------+---------+------+-----+---------+----------------+
| Field         | Type    | Null | Key | Default | Extra          |
+---------------+---------+------+-----+---------+----------------+
| id            | int(11) | NO   | PRI | NULL    | auto_increment |
| user_id       | int(11) | NO   | MUL | NULL    |                |
| role_id       | int(11) | NO   |     | NULL    |                |
+---------------+---------+------+-----+---------+----------------+
user_permission
+---------------+---------+------+-----+---------+----------------+
| Field         | Type    | Null | Key | Default | Extra          |
+---------------+---------+------+-----+---------+----------------+
| id            | int(11) | NO   | PRI | NULL    | auto_increment |
| user_id       | int(11) | NO   | MUL | NULL    |                |
| permission_id | int(11) | NO   |     | NULL    |                |
+---------------+---------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)

我已经迁移到Zend Framework,并且有问题决定Zend_Acl允许我实现当前结构.我的问题是.

  1. 我是否可以使用当前的数据库结构实现ACL以满足Zend Framework的需求?
  2. 是否有更好的实现可以让我在zend框架中实现我想要的东西?

如果有人能为我提供开始我需要做的事情,我将不胜感激.任何资源,可以帮助我的链接?

谢谢.

taw*_*kov 5

嗯,我认为这个结构真的很好,为了让这个工作,你必须做两个步骤

1 - 设置所有数据库和要求

2-创建一个ACL插件,用于确定用户的角色和权限

一些带有学说支持的例子:

开发受Doctrine支持的ACL帮助程序TDD风格,第1部分

开发受Doctrine支持的ACL帮助程序TDD风格,第2部分

另一个简单的ACL:

zend框架中的动态自定义ACL?