10
votes

CakePHP Auth comment permettre un contrôleur et des actions spécifiques

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> xxx Pré>

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');
}


0 commentaires

8 Réponses :


14
votes

La période ne fonctionnera pas. Vous pouvez essayer '/' à la place. Si cela échoue aussi, vous devez définir $ ceci-> auth-> autoriser ('index') dans POSTCONTROLLER'S :: AvantFeilter () individuellement. N'oubliez pas d'appeler le parent :: avantfilter ().


1 commentaires

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'); }



1
votes

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

ici est Le code pour ajouter dans mycontroller.php: xxx


0 commentaires

2
votes

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'));}


0 commentaires

0
votes

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;
    }
}


0 commentaires

1
votes

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'));


0 commentaires

1
votes

C'est un problème courant au développeur CakePHP à authentifier autoriser à des actions spécifiques d'un contrôleur spécifique

https://blog.sohelrana.me/ CakePHP-Auth-Auth-Autoriser des contrôleurs spécifiques-spécifiques /


0 commentaires

1
votes

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();
    }


0 commentaires

0
votes

pour CakePHP 3. * à Autoriser des méthodes spécifiques dans le contrôleur spécifique xxx


0 commentaires