Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Zend_Auth: accesso degli utenti

Il controllo dell'accesso degli utenti con Zend Auth
Il controllo dell'accesso degli utenti con Zend Auth
Link copiato negli appunti

Ora che abbiamo chiuso il ciclo delle comunicazione tra il controller, il model e la vista, vediamo come controllare l'accesso alla lista degli utenti. Quello che vogliamo ottenere è semplice: solo l'amministratore può visualizzare e gestire la lista delle utenze; per fare questo supponiamo di avere a disposizione un form per il login (lo vedremo nella lezione 19) che invia i dati inseriti dall'utente per essere successivamente confrontati con quelli presenti nella base dati, finalizzando così il processo di autenticazione. Una volta che l'utente risulta autenticato possiamo controllare i permessi e conseguentemente ciò a cui può o non può accedere.

La prima cosa da fare è verificare nel controller se ci troviamo di fronte un utente autenticato o meno, e in caso positivo passarne l'identità alla view:

public function indexAction() {
	  //recuperiamo l'istanza di Zend_Auth
	 $auth = Zend_Auth::getInstance();
   if ( $auth->hasIdentity() ) {
      $this->view->identity = $auth->getIdentity();
	   }
}

Zend_Auth implementa il pattern singleton, cosicché le informazioni circa l'utenza possono essere recuperate ovunque sia necessario nell'applicazione. Una volta che abbiamo l'istanza di Zend_Auth possiamo controllare se è impostata una identità, e in tal caso passarla alla vista. Qui possiamo utilizzare questa informazione ad esempio per escludere la visualizzazione della lista delle utenze a tutti gli utenti anonimi:

[...]
	<?php if ( null == $this->identity ) { ?>
	  //l'identità non esiste, dunque non visualizziamo la vista
	  [...]
	  <?php } else { ?>
	  [...]
	  //l'identità esiste, possiamo continuare con gli ulteriori controlli (verificare i privilegi dell'utente)
	<?php } ?>
	[...]

Quello che succede in questo codice è abbastanza intuitivo: se l'istanza della identità risulta uguale a "null" allora ci troviamo di fronte ad un utente non registrato o anonimo, e possiamo decidere come comportarci (ad esempio invece di visualizzare la lista degli utenti possiamo visualizzare un messaggio del tipo "Per accere alla risorsa selezionata devi essere loggato al sistema").

Con Zend_Auth è disponibile una serie di "adapter" che forniscono una soluzione quasi totalmente implementata per i meccanismi di autenticazione più diffusi ed utilizzati:

Zend_Auth_Adapter_Http
Zend_Auth_Adapter_Digest
Zend_Auth_Adapter_DbTable
Zend_Auth_Adapter_InfoCard
Zend_Auth_Adapter_Ldap
Zend_Auth_Adapter_OpenId

Ad esempio, gli "adapter" Http e Digest implementano il meccanismo di autenticazione memorizzando i dati in un file del disco e comunicando attraverso il protocollo HTTP.

L' "adapter" DbTable invece permette di implementare il meccanismo di autenticazione memorizzando i dati delle utenze in una tabella del database: proprio come abbiamo visto nel nostro esempio.

Grazie alla natura del sistema di "adapter" di Zend_Auth passare da un "adapter" ad un altro è un processo relativamente semplice: in altre parole, la struttura ed i meccanismi implementati in Zend_Auth permettono di passare da un sistema di autenticazione ad un altro in maniera semplice e pulita.


Ti consigliamo anche