2010-07-26 5 views
0

En vérifiant mon application, j'ai vu que chaque utilisateur peut accéder à toutes les actions qu'il contient. J'utilise cakePhp build-in ACL Component ... La vérification des permissions via les affichages des terminaux est correcte si l'utilisateur est autorisé ou non à appeler une certaine action. Mais une fois que je vérifie l'application sur le navigateur, tous les utilisateurs ont accès à chaque action. Toute idée de ce que cela pourrait faire?Autorisations ACL CakePhp

+1

S'il vous plaît, donnez une partie de code où vous vérifiez les autorisations dans votre application. –

Répondre

0

Vous pouvez faire en sorte que CakePHP gère automatiquement les tâches pour vous si vous utilisez les composants Auth et ACL intégrés. Pour commencer, vous pouvez vous assurer que vous avez un fichier app_controller.php dans le dossier App. Le mien ressemble à quelque chose comme ceci:

<?php 

class AppController extends Controller { 

    var $helpers = array('Form', 'Html', 'Javascript', 'Time'); 
    var $components = array('Acl', 'Auth', 'Session', 'Cookie');  

    function beforeFilter() { 
     $this->Auth->authorize = 'actions'; 
     $this->Auth->actionPath = 'controllers/'; 
     $this->Auth->authError = ' Access Denied!'; 

     $this->Auth->loginRedirect = '/registrations'; 
     $this->__checkAuth(); 
    } 

    private function __checkAuth() { 
     $currentUser = $this->Auth->user(); 
     $currentUser = $currentUser['User']; 
     $this->set(compact('currentUser')); 
    } 

} 
?> 

Si vous autorisez « actions » tentent alors notamment que le code dans votre fichier app_controller.php, ou en créer un si vous ne possédez pas déjà un. Puis commencez à naviguer pour voir s'il a fait des changements.

Si vous avez un code personnalisé dans beforeFilter de chaque contrôleur, vous devrez également ajouter une seule ligne de code à chaque contrôleur.

function beforeFilter(){ 
    parent::beforeFilter(); 
} 

Tout beforeFilter (même d'un blanc) placé dans un contrôleur remplace le beforeFilter du AppController sauf si vous appelez spécifiquement beforeFilter AppController utilisant le code ci-dessus.

Vous pouvez également trouver quelques-uns des meilleurs tutoriels sur l'utilisation de l'ACL de CakePHP ici: http://aranworld.com/article/161/cakephp-acl-tutorial-what-is-it

Questions connexes