Una volta attivato il component, creata la tabella degli utenti e la maschera per il login, è il momento di creare un utente per verificare il corretto funzionamento dell’autenticazione. Ecco due modi di farlo.
Inserimento manuale nella tabella users
Posso inserire i dati nella tabella attraverso il client MySQL o un altro tool grafico (io uso phpMyAdmin ) tenendo presente che la password deve essere converita con la funzione hash utilizzata da Cake, la seguente:
hashpwd = sha1 ( salt + plain_password )
dove salt è la stringa di sicurezza configurata durante l’installazione di CakePHP presente nel file \app\config\core.php.
sha1 è l’algoritmo utilizzato per default da Cake per la funzione hash, ma è possibile cambiare metodo con MD5 e SHA256
Gestione utenti
Creo una gestione completa degli utenti sulla tabella users usando il bake da riga di comando così da poter inserire il primo utente.
A questo punto, seguendo il naming canonico, accedo alla mia gestione degli utenti http://mywebspace/users/ e…. vengo rimandato alla pagina di login !!
Per accedere, almeno temporaneamente alle azioni di users, si interviene su app_controller.php, dove avevamo attivato $authComponent e si inserisce
function beforeFilter() {
$this->Auth->allow();
}
A questo punto cake concede l’accesso a qualsiasi azione e possiamo andare a creare l’utente che ci interessa.
Finito l’inserimento, rimuoviamo la riga con il metodo allow() e proviamo a d accedere di nuovo a http://mywebspace/users/.
Ci dovrebbe chiedere nuovamente la userdi – password, ma questa volta si può inserire l’utente inserito e accedere alla sezione della gestione utenti.
Da notare due cose: quando inserisce ad esempio l’URL http://mywebspace/articles/view/234 l’utente viene rimandato a http://mywebspace/users/login e dopo aver effettuato il login, viene reindirizzato sull’URL da lui richiesta in precedenza.
L’altra cosa da notare è che sulla password immessa in fase di inserimento utente, viene automaticamente eseguito l’hash prima del salvataggio in tabella, senza bisogno di aggiungere alcun codice nel controller, nel model o altrove.
Il log out
Per chiudere la sessione è sufficente creare un’action nel controller nel quale invocare il metodo logout di Auth
function logout(){
$this->Session->setFlash("L\'utente è uscito regolarmente!");
$this->redirect($this->Auth->logout());
}