Una volta autenticato un utente si può facilmente controllare il suo operato intercettando ogni azione eseguita all’interno dell’applicazione senza ricorrere alle ACL.
Si possono definire controller/action per le quali non richiedere l’autenticazione definendo il valore dell’attributo
$allowedActions = array('pages'=>'display')
oppure impostandolo dinamicamente attraverso il metodo
$this->Auth->allow(array('pages'=>'display', 'users'=>'index'));
Per determinare il tipo di controllo sulle autorizzazioni da eseguire bisogna impostare l’attributo $this->Auth->authorize che può assumere i seguenti valori:
- controller l’autorizzazione per accedere all’action richiesta è concessa dal metodo Controller::isAuthorized() che deve essere implementato
- actions esegue un controllo dell’action richiesta richiamando il metodo AclComponent::check(), quindi richiede l’impiego delle ACL.
- crud esegue la validazione delle mapActions usando il metodo AclComponent::check()
- array(‘model’=> ‘name’) esegue la validazione della mapActions usando il metodo model $name::isAuthorize(user, controller, mapAction)
- object esegue la validazione di Controller::action usando object::isAuthorized(user, controller, action)
Controller
Quando si imposta $this->Auth->authorize to ‘controller’, Auth component cercherà un’action chimata ‘isAuthorized’ per sapere se un utente è autorizzato o meno. Come nell’esempio che segue.
function isAuthorized() {
if (isset($this->params[Configure::read('Routing.admin')])) {
if ($this->Auth->user('admin') == 0) {
return false;
}
}
return true;
}
2 comments for “Auth Component: gestione dei permessi semplice e immediata”