Zend Framework - Аутентификация
Аутентификация - одна из наиболее важных и обязательных функций любого веб-приложения. Zend Framework предоставляет отдельный компонент для обработки аутентификации, который называетсяzend-authentication.
Установите компонент аутентификации
Компонент аутентификации можно установить, используя следующие Composer команда.
composer require zendframework/zend-authentication
Концепция
Обычно разработчик пишет функцию php для аутентификации данных пользователя по источнику данных. После завершения аутентификации детали аутентификации сохраняются для последующих запросов. Zend Framework обобщает эту концепцию и предоставляет два класса, которые описаны ниже:
Zend \ Authentication \ Adapter \ AdaptorInterface класса 1
Этот класс предоставляет единственный метод, authenticateнаписать логику аутентификации. Метод аутентификации возвращает экземплярZend\Authentication\Result класс.
Этот Resultобъект содержит статус аутентификации; identity, если аутентификация прошла успешно, и сообщение об ошибке, если аутентификация не удалась. Подпись интерфейса аутентификации и класса результата следующая:
AdaptorInterface
namespace Zend\Authentication\Adaptor;
public function authenticate() {
// code
}
Result class
namespace Zend\Authentication;
class Result {
public function __construct($code, $identity, array $messages = []);
}
Zend Framework предоставляет реализацию по умолчанию для аутентификации по базе данных, ldap, базовым и дайджест-учетным данным http. AnAdaptor аутентифицирует, но не сохраняет детали для любых будущих запросов.
Zend \ Authentication \ AuthenticationService класса 2
AuthenticationService - это основной компонент, который использует уже настроенный адаптер для аутентификации. После завершения аутентификации данные аутентификации сохраняются и предоставляются методы,hasIdentity() чтобы проверить, доступна ли личность, getIdentity() чтобы получить данные аутентификации и clearIdentity() чтобы очистить данные аутентификации.
Частичный листинг кода для использования этой AuthenticationService выглядит следующим образом:
$adap = new Adapter($username, $password);
$auth = new AuthenticationService(); $result = $auth->authenticate($adap);
if($result->isValid) { $identity = $auth->getIdentity(); } else { // process $result->getMessages()
}
// clear
$auth->clearIdentity();
Материал, связанный с авторизацией, упакован в два отдельных модуля, которые: zend-permissions-acl и zend-permissions-rbac. Zend-permissions-acl основан на списке контроля доступа, а zend-permissions-rbac основан на списке контроля доступа на основе ролей. Они обеспечивают абстракцию высокого уровня концепции ACL и RBAC и помогают в написании приложения корпоративного уровня.