tutorial cake auth authentication cakephp controller

authentication - tutorial - CakePHP Auth cómo permitir controlador específico y acciones



document cakephp (6)

$ this-> name devuelve el controlador actual solicitado.

intente esto en AppController :: beforeFilter ()

public function beforeFilter() { // ... Basic configs switch ($this->name) { case ''Posts'': $this->Auth->allow(''add''); break; case ''Test'': $this->Auth->allow(''test''); break; } }

Lo siento, mi inglés no es bueno

Tengo un "Posts" y un controlador "Users". Uso el Auth Component y quiero que todos los usuarios puedan visitar "Post.index", pero solo los usuarios que inician sesión pueden visitar "User.index".

En mi app_controller.php tengo esto

$this->Auth->allow(''signup'', ''confirm'', ''index'');

pero con eso todos los usuarios pueden visitar post.index y user.index. ¿Cómo puedo especificar un controlador en el método de permitir?

Esto no funcionó para mí:

$this->Auth->allow(''signup'', ''confirm'', ''Post.index'');

update Quité el ''index'' del app_controller.php y lo configuré en el método beforeFilter en el controlador de correos:

function beforeFilter() { parent::beforeFilter(); $this->Auth->allow(''index''); }

También establecí una variable "loggedIn" en app_controller, sin llamar a "parent :: beforeFilter ();" Recibí un aviso de "variable indefinida".

thx sibidiba


Depende de la versión en la que estés trabajando. Si se trata de cakephp 2.x, coloque este código en el controlador que tiene la acción que desea dar acceso sin iniciar sesión. Como su pregunta, debe poner este código en el controlador de Publicaciones:

function beforeFilter(){ $this->Auth->allow(array(''index'',''another action''));}

allow(array(''acction you want to allow'')) lugar allow(''acction you want to allow'')


El período no funcionará Puede intentar ''/'' en su lugar. Si eso también falla, debe establecer $this->Auth->allow(''index'') en PostController''s y UserController''s ::beforeFilter() individualmente. No olvides llamar al padre :: beforeFilter ().



Estoy usando CakePHP 2.x. El truco de barra no funciona.

Si desea permitir el acceso de los usuarios "myController.myAction" sin iniciar sesión, debe agregar beforeFilter () en myController.php en lugar de AppController.php

Aquí está el código para agregar a myController.php:

function beforeFilter() { parent::beforeFilter(); $this->Auth->allow(''myAction''); }


Para Cakephp 2.x, hay varios métodos (dependiendo de la versión cakephp).

De los documentos ( http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html ):

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