Zend_Auth - Gestire le autenticazioni semplicemente The Good2know Wall

Articoli Consigliati

Codemotion 2012 - Impressioni e tante emozioni.Codemotion 2012 - Impressioni e tante emozioni.

Come alcuni di voi hanno avuto modo di sapere dal post precedente, ho partecipato come speaker al Codemotion 2012. Il Codemotion è un evento organizzato dalla Facoltà...

Leggi l'articolo

Codemotion a Roma il 23-24 Marzo 2012 - Arduino, quando un aperitivo avvicina elettronica ed informatica.Codemotion a Roma il 23-24 Marzo 2012 - Arduino, quando un aperitivo avvicina elettronica ed informatica.

Cari lettori di Good2know, è con piacere che vi dò l'annuncio della mia presenza al Codemotion di quest'anno. La mattina del Sabato 24 Marzo, alle ore 09.50, terrò un...

Leggi l'articolo

La Successione di Fibonacci - VideoLa Successione di Fibonacci - Video

Ultimamente mi sono appassionato a giochi matematici ed enigmi. Mentre programmo una rubrica su enigmi e giochi matematici da pubblicare qui su Good2know, vi propongo questo...

Leggi l'articolo

Ecografia con l'iPhoneEcografia con l'iPhone

Se è vero il motto "C'è un'applicazione per tutto" anche il numero di gadget per smartphone sta raggiungendo questa definizione. E' il caso di un piccolo strumento...

Leggi l'articolo

Text shadow animation, testo in 3D con CSS3Text shadow animation, testo in 3D con CSS3

Girovagando per il web ho trovato un effetto con i nuovi css3 molto carino., fatto utilizzando i tag introdotti nella terza versione di CSS. Attraverso questi nuovi...

Leggi l'articolo

E dopo robots.txt è il momento di humans.txtE dopo robots.txt è il momento di humans.txt

Il file robots.txt penso che lo conosciamo tutti, è un file txt per aiutare i crawler dei motori di ricerca nell'indicizzazione. Bene, dopo i robot nei siti internet...

Leggi l'articolo

Zend_Acl e Zend_Auth - Sistema di autenticazione e autorizzazione con Zend FrameworkZend_Acl e Zend_Auth - Sistema di autenticazione e autorizzazione con Zend Framework

Zend_Acl è una delle tante classi di Zend molto utili. Consiste in una serie di funzionalità che permettono un controllo molto facile di CHI può fare COSA aumentando...

Leggi l'articolo

Zend_Auth - Gestire le autenticazioni semplicementeZend_Auth - Gestire le autenticazioni semplicemente

Zend_Auth è una classe di Zend Framework che permette la gestione dell'autenticazione su un sito in maniera molto semplice. Consiste in una serie di adapter per gli...

Leggi l'articolo

Aumentare le prestazioni di PHP con Facebook HipHopAumentare le prestazioni di PHP con Facebook HipHop

I carissimi programmatori di Facebook hanno rilasciato un piccolo progetto che ottimizza notevolmente le prestazioni, in fase di esecuzione, di codice php: Facebook HipHop. Come...

Leggi l'articolo

GoPano micro - lente per iPhone 4 per registrare video a 360 gradiGoPano micro - lente per iPhone 4 per registrare video a 360 gradi

Salve a tutti cari lettori, oggi vi vorrei presentare questo gadget per iPhone 4 che permette di registrare video a 360 gradi. Di seguito potete vedere un video d'esempio. Potete...

Leggi l'articolo

voglio una stampante 3D, ma il costo mi sembra ancora eccessivo per un privato. -.-'

Zend_Auth – Gestire le autenticazioni semplicemente

0

Scritto il 11/05/2011 da Filippo Matteo Riggio


Zend_Auth è una classe di Zend Framework che permette la gestione dell’autenticazione su un sito in maniera molto semplice.

Consiste in una serie di adapter per gli scenari d’uso più comuni.

Da notare bene che esso gestisce solo l’autenticazione e non l’autorizzazione, che sono due cose ben diverse.

Per quanto concerne l’autorizzazione scriverò prossimamente un articolo su Zend_Acl.

Adapter
I sistemi di autenticazione sono svariati, LDAP, OpenId, Digest, ecc.
Proprio per questo Zend mette a disposizione svariati tipi di adapter, che andranno ad interfacciarsi con Zend_Auth.
I vari adapter sono:

  • Zend_Auth_Adapter_DbTable per i database RDBMS (MySql, Postgresql, ecc.)
  • Zend_Auth_Adapter_LDAP per l’autenticazione tramite LDAP (sistema di utenti di Windows)
  • Zend_Auth_Adapter_Digest per l’autenticazione senza trasmissione di password (Digest)
  • Zend_Auth_Adapter_Http per l’autenticazione Digest, Basic e RFC-2617 (poco usata)
  • Zend_Auth_Adapter_OpenId per l’autenticazione tramite OpenId

Esempio
In genere l’autenticazione viene fatta utilizzando una username ed una password salvata su un database,
proprio per questo nel mio esempio utilizzerò un adapter per la connessione ad un database RDBMS.

Il setup è abbastanza semplice:

$adapter = new Zend_Auth_Adapter_DbTable($adapterDb,
                                                             'nome_tabella_utenti',
                                                             'colonna_identificativo',
                                                             'colonna_credenziale',
                                                             'controllo_sulla_credenziale');

Successivamente basterà passare all’adapter, identificativo e credenziale(username e password da un form) ed effettuare il controllo tramite la funzione authenticate di zend_auth.

<?php
class AccountController extends ZendControllerAction {

   public function loginAction() {

      // se un utente è già autenticato lo rimando alla homepage
      $auth = Zend_Auth::getInstance();

      if ($auth->hasIdentity()){
         $this->_redirect('/index/');
      }

       // controllo se è stata inviata la richiesta dal form di login
      if ($this->getRequest()->isPost()) {

         // prendo i dati di login
         $username = $request->getPost('username');
         $password = $request->getPost('password');

         // faccio il setup dell'adapter di zend_auth per i database
         $adapter = new Zend_Auth_Adapter_DbTable($this->db,
                                                                      'nome_tabella',
                                                                      'username',
                                                                      'password',
                                                                      'md5(?)');

         $adapter->setIdentity($username);
         $adapter->setCredential($password);

         // provo ad autenticare l'utente
         $result = $auth->authenticate($adapter);

         // se è valido salvo nello storage di zend_auth (una variabile di sessione)
         // l'identità dell'utente e faccio il redirect alla home
         if ($result->isValid()) {

            // l'adapter restituisce un array associativo con i dati dell'utente
            $user = $adapter->getResultRowObject();

            // Scrivo nello storage l'utente autenticato
            $auth->getStorage()->write($user['id_utente']);

            // send user to page they originally request
            $this->_redirect('/index');
         }

         // autenticazione fallita, rimando al login, magari con un messaggio d'errore
         $this->_redirect('/login');

      }
   }
}
?>

L’esempio, ovviamente, è incompleto, mancano eventuali controlli e messaggi d’errore, ma ci dà una piccola panoramica della semplicità d’autenticazione di Zend.
Manca anche la parte di View dell’azione, ma penso che chiunque sappia ormai fare una form di login, no? :)

Nel prossimo articolo parleremo di Zend_Acl, che combinato con Zend_Auth permette di controllare facilmente tutta la parte di autenticazione e autorizzaione di un sito/progetto.

Alla prossima!
:D

Lascia un commento