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 и помогают в написании приложения корпоративного уровня.