Отправляет email-рассылки с помощью сервиса Sendsay

PHP 5: Новые возможности.

  Все выпуски  

ZEND FRAMEWORK: Глава 21. Класс Zend_Auth


PHP 5: Новые возможности.

Класс 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) хранятся в текстовом файле в следующем формате.

someUser:Some Realm:fde17b91c3a510ecbaf7dbd37f59d4f8

Адаптеру следует передать сведения о названии файла, области использования, имени пользователя и пароле. После этого можно вызывать метод authenticate().

<?php

$adapter = new Zend_Auth_Adapter_Digest($filename,
    $realm, $username, $password);
$result = $adapter->authenticate();
        

Класс Zend_Auth_Adapter_Http обеспечивает как базовую, так и дайджестную идентификацию HTTP (см. «Дайджест»).

Адаптер требует передачи информации о приемлемых схемах (basic и/или digest), а также об области применения. Если используется дайджестная идентификация, необходимо передать также данные о разрешенных доменах и времени, на протяжении которого действительна идентификация.

Кроме того, необходимо использовать объект класса Zend_Auth_Adapter_Http_Resolver_File для проверки информации в текстовом файле, а также ссылки на объекты, представляющие HTTP запрос и ответ.

<?php

$resolver = new Zend_Auth_Adapter_Http_Resolver_File('passwd.txt');

$config = array('accept_schemes' => 'basic', 'realm' => 'Admin Area');
$adapter = new Zend_Auth_Adapter_Http($config);

$adapter->setBasicResolver($basicResolver);

assert($request instanceof Zend_Controller_Request_Http);
assert($response instanceof Zend_Controller_Response_Http);

$adapter->setRequest($request);
$adapter->setResponse($response);

$result = $adapter->authenticate();
        

Created with DocBook


В избранное