Опубликовано: Алексей Качаев | 21 комментарий
В эпоху веб2.0 пользовали - неотъемлемая часть практически любого серьезного проекта. А значит, не менее серьезным есть вопрос управления пользовательским доступом. Под этим я понимаю то, что пользователь:
1) должен уметь “зайти” (авторизироваться) / “выйти”;
2) должен делать на сайте только то, что ему позволил создатель веб-мастер.
Последнее касается не только авторизированных пользователей, а и всех остальных (мы будем для удобства называть их “гостями”).
Сегодня я хочу поделиться своим опыт создания такой системы в рамках фреймворка Zend. В самом Zend`e есть два очень мощных инструмента:
а) Zend_Auth - он успешно решает первую задачу;
б) Zend_Acl - это мощная система управления правами пользователей, которая решает вторую задачу.
Дело встало за малым… Соединить их в единую трудо способную систему. О том, как сделать эту связку наиболее продуктивной и/или гибкой точиться много споров. Если внимательно прочитать официальную документацию, то ничего конкретного там по этому поводу не содержится. Поэтому, сколько разработчиков, столько и мнений.
Помню, когда передо мной встал этот вопрос впервые, я прошерстил много материалов, но целостной конечной реализации, которая удовлетворила бы все мои интересы… не нашел. Недавно подобный вопрос “всплыл” и в ЖЖ комьюнити ru_php.
Я приведу свой способ без разбора его производительности. Единственное, что могу сказать точно: описанный способ достаточно гибок для того, что удовлетворить все мои потребности в процессе аутентификации пользователей и распределении их прав.
Итак, начнем…
1. Задача
Сформулируем для себя простенькую задачу, которая бы отобразила все моменты реальной разработки. Ну, например, так:
- пользователь для того, чтобы залогиниться вводит логин и пароль;
- список пользователей храниться в базе данных в таблице `users`;
- авторизированный пользователь видет в углу блок со своим именем и ссылкой “выйти”;
- авторизированный пользователь не может еще раз войти и не может зарегистрироваться, а “гость” не может “выйти” (так как он еще не вошел).
Требования, сами понимаете, минимальные, и легко расширяемые до того, что вам нужно.
[Читать далее...]
Понравился пост? Будь в курсе последних событий: подпишись на RSS-ленту.!