| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Libraries > Zend_Auth |
| Автор: fearuth 11.1.2011, 12:22 |
| Привет всем! Столкнулся с задачей в которой необходим условием является использование Zend Framework. Погуглил, поковырял данный MVC. Сейчас появлися вопрос, на который не могу найти чёткого ответа. Нужно создать механизм авторизации. В большинстве сайтов встречается один и тот же пример с использованием Zend_Auth, но описание не ахти какое. Знающие люди поделитесь опытом =) Очень инетересно =) |
| Автор: CruorVult 11.1.2011, 13:36 |
| http://framework.zend.com/manual/ru/zend.auth.html |
| Автор: fearuth 12.1.2011, 07:29 | ||
| Я вроде как писал, что читал документацию =) Ладно, поставим вопрос по другому. =) Задача у меня следующая. Есть БД, в ней таблица users, в таблице ключевые поля nick, pass (пароль), lock (показывает заблокирован доступ пользователю к приложению или нет). Если я правильно понял сам алгоритм аутентификации будет примерно следующим:
А как проверять авторизован пользователь в других Action или нет? |
| Автор: CruorVult 12.1.2011, 11:35 | ||
| не путайте аутентификацию и авторизацию! Если пользователь прошел аутентификацию то выполняем авторизацию с помощью сессий.
|
| Автор: fearuth 12.1.2011, 12:24 | ||||
Тогда получается, что
выполняет поиск по БД в соответствующих полях по условию AND, а в
нужно выполнить запись в сессию? Тогда как потом проверять в последующих Action других контроллеров, что авторизация прошла? ЗЫ. Я просто хочу разобраться основательно, а не писать костыли и велосипеды =( |
| Автор: CruorVult 12.1.2011, 12:41 | ||
вы механизм работы сессий знаете? |
| Автор: fearuth 12.1.2011, 12:52 |
| Знаю. =) Но в Zend есть Zend_Session, а он в свою очередь как то тесно связан с Zend_Auth... Если не тяжело можно разъяснить? |
| Автор: fearuth 12.1.2011, 13:18 | ||
| Вот как раз с разграничением прав пользователей будет разрабатываться. Я уже почитал про Zend_Acl. Очень удобно. Я пока сделал вот такой вариант проверки то, что пользователь прошел авторизацию:
Это нормально? |
| Автор: CruorVult 12.1.2011, 13:36 |
| это только аутентификация, авторизации у вас нет. + авторизация должна проходить в одном месте а не вовсех контроллерах, в остальных проверяется только сессия |
| Автор: fearuth 12.1.2011, 13:40 |
| Тогда как мне быть? Прошу хоть мало-мальский пример... Ну хоть, что-то от чего можно оттолкнуться. |
| Автор: CruorVult 12.1.2011, 13:48 | ||
после этого будет авторизирован пользоватьель и в любом месте вы можете пустить его дальше или нет |
| Автор: fearuth 13.1.2011, 09:02 | ||||||
Долго и упорно вчитывался в документацию и наткнулся на несколько фактов:
2. По умолчанию, Zend_Auth обеспечивает постоянное хранение идентификатора полученного в результате успешной попытки аутентификации в PHP сессии. При успешной попытке, Zend_Auth::authenticate() сохраняет идентификатор в постоянном хранилище ... которое в свою очередь использует Zend_Session!
является велосипедом, так как это значение уже есть в хранилище/Zend_Session. Получить его можно при помощи Zend_Auth::getIdentity(). В моём же случае, мне нужно только проверять в каждом Action существует ли результат моей аутентификации в сессии или нет. Для этого, как раз и существует метод Zend_Auth::hasIdentity(), который проверяет наличие сессии и результата аутентификации =) Исходя из этого, метод контроллера:
используемый в каждом Action перед выполнением энных действий и является АВТОРИЗАЦИЕЙ (авторизация — предоставление этому лицу возможностей в соответствие с положенными ему правами или проверка наличия прав при попытке выполнить какое-либо действие (с) википедия). |
| Автор: CruorVult 13.1.2011, 12:06 | ||||||||
Вы наверное не поняли смысла:
это пример как можно авторизовать пользователя посредством сессий, а каким образом вы будете это делать - по вашому желанию
интересно каким образом, если вы собираетесь использовать только идентификатор успешной авторизации? |
| Автор: fearuth 13.1.2011, 12:56 | ||
Москва не сразу строилась =) Пока прошел трудный и тернистый путь аутентификации и авторизации. Сейчас буду прикручивать Zend_Acl =) А в хранилище Zend_Auth можно дописать дополнительную информацию =) А потом из него извлекать =) |
| Автор: CruorVult 13.1.2011, 13:05 |
ну можно расширить класс Zend_Auth под свои потребности, но через Zend_Session имхо будет проще. Добавлено через 7 минут и 49 секунд а хотя можно с помощью Zend_Auth_Storage_Session |
| Автор: fearuth 13.1.2011, 13:18 |
Всё возможно. =) Главное разобрался, как сделать. Сейчас дальше буду ковырять. Еще подмутил фишку небольшую. Для Zend_Auth_Adapter_DbTable не очень создавать объект класса Zend_Db_Adapter_Pdo_Pgsql(). Почитал и нашел решение, как его можно вытащить его из application.ini =) |