Учебники

Zend Framework — Аутентификация

Аутентификация является одной из наиболее важных и обязательных функций в любом веб-приложении. Zend Framework предоставляет отдельный компонент для обработки аутентификации, который называется zend-аутентификация .

Установите компонент аутентификации

Компонент аутентификации может быть установлен с помощью следующей команды Composer .

composer require zendframework/zend-authentication

концепция

Обычно разработчик пишет функцию php для аутентификации пользовательских данных в источнике данных. Как только аутентификация выполнена, детали аутентификации сохраняются для последующих запросов. Zend Framework обобщает эту концепцию и предоставляет два класса, которые описаны ниже:

Класс 1 Zend \ Authentication \ Adapter \ AdaptorInterface

Этот класс предоставляет один метод аутентификации для записи логики аутентификации. Метод authenticate возвращает экземпляр класса Zend \ Authentication \ Result .

Этот объект Result содержит статус аутентификации; идентификатор, если аутентификация прошла успешно, и сообщение об ошибке, если аутентификация не удалась. Подпись интерфейса проверки подлинности и класса результата выглядит следующим образом:

AdaptorInterface

namespace Zend\Authentication\Adaptor; 
public function authenticate() { 
   // code 
}

Результат класса

namespace Zend\Authentication; 
class Result { 
   public function __construct($code, $identity, array $messages = []); 
}

Zend Framework предоставляет реализацию по умолчанию для аутентификации по базе данных, ldap, http basic и digest. Адаптер аутентифицирует, но не сохраняет детали для любых будущих запросов.

Класс 2 Zend \ Authentication \ AuthenticationService

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