Я думаю, вам нужно подумать о нескольких понятиях здесь. Первым будет список контроля доступа ( ACL ), а затем будет аутентификация.
В ACL вы определяете ресурсы , которые являются объектами, к которым вы хотите ограничить доступ, и роли , которые являются объектами, которые могут запрашивать доступ к ресурсу.
То, как я реализую свой ACL, использует Zend_Acl . У меня есть таблица под названием user_roles
user_roles('user_role_id', 'name', 'permissions', 'parent_role_id')`
У меня также есть таблица с именем user_role_maps
, которая сопоставляет идентификатор пользователя с идентификатором роли пользователя. (Вы можете просто использовать это как столбец в пользовательской таблице, но это зависит только от того, как вы относитесь к нормализации ;-).) Затем я могу создать свой объект Zend_Acl из этой таблицы, а затем, когда пользователь аутентифицирован, я могу определить, к каким ресурсам они имеют разрешение и какие действия они могут выполнять над ресурсом. (Ресурс реализует Zend_Acl_Resource_Interface
, поэтому его можно идентифицировать как Zend_Acl
как ресурс.
Что касается аутентификации, это более простая концепция (на мой взгляд), вы, наверное, уже разобрались в какой-либо форме системы аутентификации, соответствующей токенам. Важным аспектом является использование идентифицированного идентификатора пользователя для определения его роли. Zend Framework также предоставляет пакет для этого в Zend_Auth .
Я использовал здесь множество рекомендаций Zend Framework, причина в том, что их пакеты имеют очень мало зависимостей от других пакетов, что упрощает подключение компонентов. Я уверен, что другие инфраструктуры предоставляют пакеты ACL, которые Вы можете использовать или развернуть свое, если у вас есть время и понимание.
Удачи.