L'autenticazione è quel processo che permette di identificare un individuo in base alle credenziali che fornisce, normalmente una coppia di valori nome utente - password.
Il controllo degli accessi è invece quel processo che permette di distinguere tra quello che un utente autenticato può o non può fare nell'applicazione. ZF dispone di due componenti per gestire entrambi i processi, rispettivamente Zend_Auth e Zend_Acl: nelle prossime lezioni vedremo un esempio pratico del loro utilizzo.
L'esempio che vedremo riguarda una situazione decisamente comune per una web application, ovvero la gestione degli utenti: chiunque interagisca con la nostra applicazione può essere considerato un utente che ricopre un determinato ruolo (es. Anonimo, Editore, Amministratore, ecc.). In base al ruolo ricoperto l'utente può disporre di determinate risorse e di determinate azioni per interagire con l'applicazione.
Una web application complessa può avere diversi ruoli per categorizzare le utenze, ma nel nostro esempio prenderemo in considerazione una situazione che ci permetta di studiare le casistiche basilari; configureremo i seguenti ruoli:
- Registrati: utenti semplicemente registrati al sito che non hanno alcun privilegio se non quello di leggere contenuto "protetto"
- Editore: utenti che hanno i privilegi per gestire il contenuto (creare, modificare, eliminare)
- Amministratore: l'utente che gestisce il sito, che quindi può accedere a qualsiasi funzionalità ed a qualsiasi contenuto
Abbiamo bisogno di uno storage per la memorizzazione delle utente: vedremo che ci sono diverse strade percorribili, ma per il nostro esempio supponiamo di dedicare una tabella del database per il salvataggio permanente delle utenze. La tabelle potrebbe avere la seguente struttura:
CREATE TABLE `utenti` (
`userid` int(11) NOT NULL auto_increment,
`username` varchar(50) default NULL,
`password` varchar(250) default NULL,
`firstname` varchar(50) default NULL,
`lastname` varchar(50) default NULL,
`role` varchar(25) default NULL,
`status` tinyint(2) default 0,
PRIMARY KEY (`userid`)
) DEFAULT CHARSET=utf8;
Lanciando questo statement SQL creiamo la tabella utenti nella base di dati. Come abbiamo visto, per gestire la tabella dobbiamo creare un model Utente
, rappresentato dal file Utente.php situato all'interno della directory application/models/:
<?php
class Model_Utente extends Zend_Db_Table_Abstract {
/**
* nome della tabella
*/
protected $_name = 'utenti';
/**
* chiave primaria
*/
protected $_primary = 'userid';
}
Più avanti vedremo in dettaglio l'implementazione del form per la registrazione degli utenti, e quindi il processo di creazione di un'utenza. Per ora supponiamo di avere già utenti registrati nella nostra applicazione, e di aver già configurato l'utenza di amministratore.