Jeśli używasz jakiegoś routingu będzie sensu dokonać ACL (lista kontroli dostępu) zależy od zdefiniowanego routingu.
Zwykle uruchamiam z tabelą uprawnień i tabelami uprawnień użytkownika w relacji HABTM. W ten sposób, gdy routing jest zgodny, można wyszukać pozwolenie. Jeśli użytkownik nie ma uprawnień, odmawia mu dostępu. Można to poprawić, sprawdzając różne typy metod GET, POST, PUT i DELETE.
Dzieje się tak, ponieważ podoba mi się możliwość edycji uprawnień i ustawień z poziomu interfejsu internetowego i umożliwienia innym osobom dokonania tego samego (np. Marketingowcy).
Oto układ:
+-----------------------+
| permissions |
+-----------------------+
| id | pattern | method |
+-----------------------+
| 1 | | GET | # => Will hit the root of your application
| 2 | users | GET | # => Will hit users/, usually listing the users
| 3 | users | PUT | # => Will hit anyone trying to insert a new user into the system.
| 4 | users/:id | GET | # => Will hit anyone who tries to view a specific user
| 5 | users/:id | POST | # => Will hit anyone trying to update a user
+-----------------------+
+-------------------------+
| permissions_users |
+-------------------------+
| user_id | permission_id |
+-------------------------+
| 1 | 1 | # => Will allow to view the root of the application
| 1 | 2 | # => Will allow to view the users list
+-------------------------+
więc użytkownik 1 nie ma żadnych praw, które mogłyby wpłynąć na zmianę zapisów. A ponieważ routing określa, gdzie znajdują się różne metody żądania, nie można po prostu POST do/użytkowników, aby wyświetlić listę.
Zend_Acl to jedyny ZF, którego używam na jednej z moich stron i jest cudowny.Jeśli nie chcesz przejść przez teorię ACLness, aby dowiedzieć się więcej na jej temat (co często lubię robić), bardzo polecam ją tam upuścić. – Hans