2015-01-01 12 views

risposta

4

ACL non è integrato in CakePHP 3 come in CakePHP 2. È ora disponibile come plug-in separato.

Citazione di http://book.cakephp.org/3.0/en/appendices/3-0-migration-guide.html

classi relative ACL sono stati spostati in un plugin separato. Password hashers, Provider di autenticazione e autorizzazione spostati nello spazio dei nomi \ Cake \ Auth. È necessario spostare anche i provider e le porzioni di telefono nello spazio dei nomi App \ Auth.

È possibile trovare il plug-in a https://github.com/cakephp/acl, ma si noti che non è ancora stabile.

3

Grande domanda, come Daniel Castro ha dichiarato che il plug-in è https://github.com/cakephp/acl.

La parte che manca è quello di ignorare 'isAuthorized' nel vostro 'AppController.php' con qualcosa di simile:

... 
use Acl\Controller\Component\AclComponent; 
use Cake\Controller\ComponentRegistry; 
... 



public function isAuthorized($user){ 
     $Collection = new ComponentRegistry(); 
     $acl= new AclComponent($Collection); 
     $username=$user['username']; 
     $controller=$this->request->controller; 
     $action=$this->request->action; 
     $check=$acl->check($user['username'],"$controller/$action"); 
     return $check; 
    } 

Qualcuno più saggio di me saprà meglio se i bit utente/azione/controller potrebbe essere meglio igienizzato. Ci sono molti avvertimenti sulla stabilità di questo plugin e "gotchas" su acl in termini di prestazioni.

Sto tagliando sopra da un'implementazione 1.3, è stato utile per aggiungere nella AppController 'inizializzazione' informazioni da http://book.cakephp.org/3.0/en/controllers/components/authentication.html