Zend Framework - Autenticación
La autenticación es una de las características más importantes e imprescindibles de cualquier aplicación web. Zend Framework proporciona un componente separado para manejar la autenticación, que se denomina comozend-authentication.
Instalar un componente de autenticación
El componente de autenticación se puede instalar utilizando los siguientes Composer mando.
composer require zendframework/zend-authentication
Concepto
Por lo general, un desarrollador escribe una función php para autenticar los detalles del usuario en una fuente de datos. Una vez que se realiza la autenticación, los detalles de autenticación se conservan para solicitudes posteriores. Zend Framework generaliza este concepto y proporciona dos clases, que se explican a continuación:
Zend \ Authentication \ Adapter \ AdaptorInterface de clase 1
Esta clase proporciona un solo método, authenticatepara escribir la lógica de autenticación. El método de autenticación devuelve una instancia deZend\Authentication\Result clase.
Esta Resultel objeto tiene el estado de autenticación; identidad si la autenticación tiene éxito y un mensaje de error, si la autenticación falla. La firma de la interfaz de autenticación y la clase de resultado es la siguiente:
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 proporciona una implementación predeterminada para autenticarse con las credenciales de base de datos, ldap, http basic y digest. UnAdaptor autentica pero no conserva los detalles para futuras solicitudes.
Zend \ Authentication \ AuthenticationService de clase 2
AuthenticationService es el componente principal, que utiliza el adaptador ya configurado para fines de autenticación. Una vez que se realiza la autenticación, conserva los detalles de autenticación y proporciona métodos,hasIdentity() para comprobar si hay una identidad disponible, getIdentity() para obtener los detalles de autenticación y clearIdentity() para borrar los detalles de autenticación.
La lista de código parcial para usar este AuthenticationService es la siguiente:
$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();
Las cosas relacionadas con la autorización están empaquetadas como dos módulos separados, que son: zend-permissions-acl y zend-permissions-rbac. El zend-permissions-acl se basa en la lista de control de acceso y el zend-permissions-rbac se basa en la lista de control de acceso basado en roles. Proporcionan una abstracción de alto nivel del concepto de ACL y RBAC y ayudan a escribir la aplicación de nivel empresarial.