Auth Component: gestione dei permessi semplice e immediata

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

  1. 22 febbraio 2009 at 16:29

    No, perchè il controllo che viene fatto al momento della concessione è il seguente


    $isAllowed = (
    $this->allowedActions == array('*') ||
    in_array($controller->params['action'], $this->allowedActions)
    );

    Quindi richiede necessariamente un elemento con controller/azione.

  2. Raffaele
    22 febbraio 2009 at 15:57

    Per quanto rigurarda questa forma di definizione di pagine escluse dal sistema di controllo di login
    $this->Auth->allow(array('pages'=>'display', 'users'=>'index'));

    Non è possibile specificare solo il controller? Una cosa tipo array(‘pages’ => ‘*’); ?

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *