5

我想为我的应用程序构建一个具有以下要求的 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    |                |
+---------------+---------+------+-----+---------+----------------+

我已经迁移到 Zend 框架,并且在决定 Zend_Acl 是否允许我实现当前结构时遇到问题。我的问题是。

  1. 我是否可以使用当前数据库结构实现 ACL 以在 Zend Framework 中完成所需的工作?
  2. 有没有更好的实现可以让我在 zend 框架中实现我想要的?

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

谢谢你。

4

2 回答 2

5

嗯,我认为这个结构非常好,要让它工作你必须做两个步骤

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

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

一些有教义支持的例子:

开发一个 Doctrine 支持的 ACL 助手 TDD 样式,第 1 部分

开发基于 Doctrine 的 ACL 助手 TDD 样式,第 2 部分

另一个简单的 ACL:

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

于 2012-04-25T11:26:55.180 回答
0

为什么不使用数据库中已有的 Grants/Roles 系统?

于 2021-10-20T21:51:07.900 回答