Autenticar un usuario en Zend Framework – Crear el adaptador

Después de pelearnos nuestras horas con el framework de Zend hemos conseguido identificar un usuario con las herramientas que provee este framework (Zend_Auth). La adapatación no ha sido al 100% porqué teniendo la información relativa a los usuarios en una base de datos no utilizamos el adaptador que Zend tiene empleado para estos fines (Zend_Auth_Adapter_DbTable) sino que implementamos un adaptador desde cero.

Antes de empezar a definir que nos hace falta para poner en marcha la identificación de usuario comentamos que estos pasos se han realizado en un servidor Lighttpd-MySQL-PHP5 en un sistema operativo Ubuntu 8.10. Ahora sí, vamos a ver como establecer una autentificación de usuarios:

Implementar un adaptador para autentificar usuarios

Este paso se puede modificar según el origen de la información que vayamos a usar. El framework tiene soluciones específicas para datos de acceso almacenados en base de datos, provenientes de peticiones HTTP, de un servidor LDAP o por OpenID. Como hemos comentado al principio nuestros datos estan almacenados en una base de datos pero vamos a implementar un adaptador desde cero.

Para implementar un adaptador desde cero debemos implementar la interfície Zend_Auth_Adapter_Interface, para eso deberemos implementar obligatoriamente el metodo authenticate() (por razones derivadas de la herencia) y también le añadiremos un par de cositas más. Este adaptador debe recibir la información necesaria para identificar un usuario y realizar la comprovación.

Veamos un ejemplo de la classe:
<?php
class AuthenticationAdapter implements Zend_Auth_Adapter_Interface{

private $_username = null;
private $_password = null;

public function __construct($username, $password){
$this->_username = $username;
$this->_password = $password;
}

public function authenticate(){
//TODO comprobar si $username y $password estan presentes en la base de datos
...

if(/* Estan presentes*/){
/* $sessionData es una variable con la información que queremos guardar en sessión */

return new Zend_Auth_Result(Zend_Auth_Result::SUCCESS,$sessionData);
}else{
/* Si no esta el $username */
return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND,$sessionData);

/* Si el password es incorrecto */
return new Zend_Auth_Result(Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID,$sessionData);

/* Error en la identificación por otros motivos */
return new Zend_Auth_Result(Zend_Auth_Result::FAILURE,$sessionData);
}
}
}

En el próximo post seguiremos con el controlador y como utilizar este adaptador. No falteis!

One thought on “Autenticar un usuario en Zend Framework – Crear el adaptador

  1. Hola Xavi

    En una linea decis

    “Para implementar un adaptador desde cero debemos implementar la interfície Zend_Auth_Adapter_Interface, para eso deberemos implementar obligatoriamente el metodo authenticate() (por razones derivadas de la herencia)”

    Esto es erroneo ya que las razones por las cuales tenes que poner el metodo authenticate es por la implementacion de la interfaz no por herencia.

    Saludos

Leave a Reply

Your email address will not be published. Required fields are marked *