J'ai un "post" et un contrôleur "utilisateur". J'utilise le composant authentifiant et je souhaite que tous les utilisateurs puissent visiter "post.index", mais seulement les utilisateurs connectés ne peuvent visiter "user.index".
dans mon app_controller.php j'ai ce p> Mais avec ce que tous les utilisateurs peuvent visiter post.index et user.index. Comment puis-je spécifier un contrôleur dans la méthode Autory? P> Cela n'a pas fonctionné pour moi: P> function beforeFilter()
{
parent::beforeFilter();
$this->Auth->allow('index');
}
8 Réponses :
La période ne fonctionnera pas. Vous pouvez essayer '/' à la place. Si cela échoue aussi, vous devez définir $ ceci-> auth-> autoriser ('index') code> dans POSTCONTROLLER'S :: AvantFeilter () code> individuellement. N'oubliez pas d'appeler le parent :: avantfilter (). P>
Réponse parfaite! Il n'a pas fonctionné avec '/' donc j'ai supprimé "index" de l'app_controller et l'a autorisé dans la post-contrôleur: fonction avantfilter () {parent :: avantfilter (); $ ceci-> auth-> autoriser ('index'); }
J'utilise CakePHP 2.x. Le truc de Slash ne fonctionne pas.
Si vous souhaitez autoriser l'accès à l'utilisateur "myController.myaction" sans connexion, vous devez ajouter avantfilter () dans myController.php au lieu de appcontroller.php p>
ici est Le code pour ajouter dans mycontroller.php: p>
dépend de la version sur laquelle vous travaillez. Si c'est CakePHP 2.x, mettez ce code dans le contrôleur qui a l'action que vous souhaitez donner accès sans connexion. Comme votre question, vous devez mettre ce code au contrôleur de poste:
function beforeFilter(){
$this->Auth->allow(array('index','another action'));}
Ceci-> nom retourne le contrôleur actuel demandé.
Essayez ceci dans AppController :: avantfilter () p>
public function beforeFilter()
{
// ... Basic configs
switch ($this->name) {
case 'Posts':
$this->Auth->allow('add');
break;
case 'Test':
$this->Auth->allow('test');
break;
}
}
pour CakePHP 2.x, il existe plusieurs méthodes (en fonction de la version CakePHP).
de la DOCS ( http://book.cakephp.org/2.0/fr/core-libries/comPonents/authentication.html ): P>
// Allow all actions. CakePHP 2.0
$this->Auth->allow('*');
// Allow all actions. CakePHP 2.1
$this->Auth->allow();
// Allow only the view and index actions.
$this->Auth->allow('view', 'index');
// Allow only the view and index actions.
$this->Auth->allow(array('view', 'index'));
C'est un problème courant au développeur CakePHP à authentifier autoriser à des actions spécifiques d'un contrôleur spécifique p>
https://blog.sohelrana.me/ CakePHP-Auth-Auth-Autoriser des contrôleurs spécifiques-spécifiques / P>
dans Cake 3.x Vous pouvez utiliser ci-dessous des lignes de code pour permettre toutes les actions.
public function beforeFilter(Event $event) {
parent::beforeFilter($event);
$this->Auth->allow();
}
pour