Autenticare gli utenti con Zend_Auth - 1

Utilizzo di Zend_Auth

Vediamo ora quali sono i passi principali per effettuare l'autenticazione dell'utente, verificare successivamente la sua identità ed infine effettuare il logout.

L'autenticazione dell'utente parte con la creazione ed il setup dell'Adapter adeguato. Ad esempio nel caso dello Zend_Auth_Adapter_DbTable passiamo all'Adapter alcune informazioni sulla tabella del DB contenete le credenziali degli utenti e successivamente passiamo username e password dell'utente corrente (maggiori dettagli nel prossimo articolo).

A questo punto si può procedere seguendo 2 strade:

1) Autenticazione diretta: richiamiamo il metodo authenticate() dell'Adapter e recuperiamo l'oggetto Zend_Auth_Result per verificarne l'esito. Se l'autenticazione ha successo procediamo alla memorizzazione dell'identità dell'utente nello Storage di Zend_Auth. Per farlo recuperiamo l'oggetto Storage col metodo getStorage() di Zend_Auth e poi utilizziamo il metodo write().

// Creo il mio Adapter (viene considerato un generico Adapter personalizzato)
$authAdapter = new MyAuthAdapter($username, $password);

// Effettuo l'autenticazione direttamente
$result = $authAdapter->authenticate();

if ($result->isValid()) {
    // Autenticazione avvenuta con successo, devo memorizzare l'esito
    Zend_Auth::getInstance()->getStorage()->write($username);
} else {
    // Autenticazione fallita
}

2) Autenticazione indiretta: richiamiamo Zend_Auth::authenticate() a cui passiamo come parametro proprio l'Adapter precedentemente creato. Zend_Auth::authenticate() chiamerà a sua volta il metodo authenticate() dell'Adapter e restituirà un oggetto Zend_Auth_Result (analogamente a quanto avviene al punto 1). Inoltre, se l'autenticazione ha esito positivo, memorizzerà l'identità dell'utente nello Storage in modo da rendere permanente il risultato dell'autenticazione.

$auth = Zend_Auth::getInstance();

// Creo il mio Adapter (viene considerato un generico Adapter personalizzato)
$authAdapter = new MyAuthAdapter($username, $password);

// Effettuo l'autenticazione indirettamente, attraverso Zend_Auth
$result = $auth->authenticate($authAdapter);

if ($result->isValid()) {
    // Autenticazione avvenuta con successo
} else {
    // Autenticazione fallita
}

Anche se a prima vista l'autenticazione indiretta sembra più conveniente, per via della memorizzazione automatica dell'esito (l'identità dell'utente loggato), il primo metodo è da preferire quando vogliamo procedere personalmente alla memorizzazione di alcuni dati dell'utente nello Storage di Zend_Auth, come vedremo nell'esempio che svilupperemo nel prossimo articolo.

Effettuata l'autenticazione e memorizzato l'esito, per verificare se l'utente corrente è loggato basta controllare se la sua identità sia presente nello Storage di Zend_Auth ed eventualmente recuperarla:

$auth = Zend_Auth::getInstance();
if ($auth->hasIdentity()) {
    // recupero l'identità dell'utente
    $identity = $auth->getIdentity();
}

Anche se queste operazioni vengono effettuate interrogando Zend_Auth, in realtà questo componente interroga lo Storage per ottenere le informazioni necessarie.

L'operazione di logout avviene invece cancellando dallo Storage l'identità precedentemente memorizzata, ed anche in questo caso possiamo demandare l'operazione a Zend_Auth:

Zend_Auth::getInstance()->clearIdentity();
Pagine: precedente 1 2 3
Effettua l'accesso o registrati per inserire un commento