В предлагаемом материале рассказывается об идентификации с помощью класса Zend_Session.
Обзор
Класс Zend_Auth
предоставляет API для идентификации (authentication) и включает конкретные адаптеры для общих случаев.
Замечание
Класс Zend_Auth обеспечивает именно идентификацию, т. е. проверку заявленных признаков. Авторизацией, т. е. проверкой прав доступа к тому или иному элементу для данной идентичности, занимается класс Zend_Acl (см. Глава 22, Класс Zend_Acl).
Адаптеры и результаты
Адаптеры используются для идентификации с использованием определенных сервисов (LDAP, RDBMS, файловое хранилище). Различные адптеры обладают разными свойствами и поведением, но некоторые вещи являются общими для всех адаптеров.
Каждый из адаптеров воплощает интерфейс Zend_Auth_Adapter_Interface
с единственным методом authenticate(), возвращающим объект класса Zend_Auth_Result или генерирующим исключительную ситуацию Zend_Auth_Adapter_Exception в случае возникновения ошибки при выполнении запроса.
Класс Zend_Auth_Result, в свою очередь, предоставляет методы isValid(), getCode(), getIdentity()
и getMessages(), которые могут быть использованы для проверки результата идентификации или, в случае ее неуспешности, для получения информации о причинах ошибки.
Базы данных
Класс Zend_Auth_Adapter_DbTable обеспечивает возможность идентификации по «удостоверениям личности» (credentials), хранящимся в базе данных. Непосредственную работу с базой данных осуществляет потомок класса Zend_Db_Adapter_Abstract.
Адептеру идентификации в конструкторе передаются адаптер базы данных, название таблицы, где хранятся «удостоверения личности», а также названия столбцов с именем пользователя и паролем. Затем устанавливаются значения проверяемого «удостоверения» (имя пользователя и пароль) и вызывается метод authenticate().
<?php
$dbAdapter = new Zend_Db_Adapter_Pdo_Sqlite(array('dbname' => ':memory:'));
$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter,
'users', 'username', 'password');
$authAdapter->setIdentity('my_username')
->setCredential('my_password');
$result = $authAdapter->authenticate();
Дайджест
Класс Zend_Auth_Adapter_Digest обеспечивает дайджестную идентификацию - метод, основанный на базовой идентификации HTTP. Области использования (realm), имена пользователей и пароли (закодированные MD5)
хранятся в текстовом файле в следующем формате.
Адаптеру следует передать сведения о названии файла, области использования, имени пользователя и пароле. После этого можно вызывать метод authenticate().
Класс Zend_Auth_Adapter_Http обеспечивает как базовую, так и дайджестную идентификацию HTTP (см. «Дайджест»).
Адаптер требует передачи информации о приемлемых схемах (basic и/или digest),
а также об области применения. Если используется дайджестная идентификация, необходимо передать также данные о разрешенных доменах и времени, на протяжении которого действительна идентификация.
Кроме того, необходимо использовать объект класса Zend_Auth_Adapter_Http_Resolver_File для проверки информации в текстовом файле, а также ссылки на объекты, представляющие HTTP запрос и ответ.