2012-04-24 13 views
5

tôi muốn xây dựng một hệ thống ACL cho ứng dụng của tôi có yêu cầu sau đây.Zend_Acl, với vai trò và quyền được lưu trữ trong cơ sở dữ liệu

  1. Người dùng sẽ được chỉ định một hoặc nhiều vai trò. (Quản trị viên, Nhân viên), v.v.
  2. Vai trò sẽ có quyền. (Gửi_Invoices, Send_mail, Delete_Invoices, Send_Estimate) v.v.
  3. Người dùng sẽ được chỉ định quyền tùy chỉnh ngoài vai trò được thừa hưởng.

cấu trúc cơ sở dữ liệu của tôi cho ACL như sau

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 |    | 
+---------------+---------+------+-----+---------+----------------+ 

tôi đã di cư đến Zend Framework, và có vấn đề quyết định thời tiết Zend_Acl cho phép tôi để thực hiện các cấu trúc hiện hành. câu hỏi của tôi là.

  1. tôi có thể triển khai ACL với cấu trúc cơ sở dữ liệu hiện tại để làm việc cần thiết trong Zend Framework không?
  2. có triển khai nào tốt hơn có thể cho phép tôi đạt được những gì tôi muốn trong khung công tác zend không?

tôi sẽ biết ơn nếu ai đó có thể cung cấp cho tôi một cách để bắt đầu với những gì tôi cần làm. bất kỳ tài nguyên, liên kết nào có thể giúp tôi?

cảm ơn bạn.

Trả lời

5

Vâng, tôi nghĩ rằng cấu trúc này là thực sự tốt, để có được điều này làm việc bạn phải làm 2 bước

1-Setup tất cả các cơ sở dữ liệu và các yêu cầu

2- tạo một plugin ACL đó xác định vai trò của người sử dụng và cho phép mình

một số ví dụ với sự hỗ trợ doctrine:

Developing a Doctrine-backed ACL helper TDD-style, part 1

Developing a Doctrine-backed ACL helper TDD-style, part 2

khác ACL đơn giản:

Dynamic custom ACL in zend framework?