5

Pasaré de CakePHP 1.3 a CakePHP 2.2.2 y deseo utilizar la autenticación de Http básica para un área de administración sencilla. Simplemente no puedo hacerlo funcionar y estoy pensando que entendí algo mal en la documentación.Autenticación de autenticación básica de CakePHP 2

De la documentación que entender que tengo que hacer algo como

public $components = array(
    'Auth' => array(
     'authenticate' => array(
     'Basic' 
    ), 
     'authError' => 'You may not access this area.', 
     'authorize' => array('Controller') 
    ) 
); 

entiendo que más me necesidad de ampliar el componente BaseAuthenticate para devolver la fecha de usuario válido, pero incluso con la configuración anterior que se puede esperar que el navegador Http Access Dialog se abriría en una ventana emergente. Pero nada de esto sucede, en su lugar, me redirigen a/users/login, que no existe. ¿Por qué necesito una vista de inicio de sesión para Http Access? Estoy confundido.

Respuesta

7

añadir el componente Auth a su controlador (o al AppController)

class ThingsController extends AppController { 
    var $components = array('Auth'); 
} 

CakePHP requiere una acción entrada, por lo que incluso si se utiliza la autenticación básica, donde el agente de HTTP es responsable de la UI para recopilar detalles de autenticación, debe designar una acción en algún controlador que manejará el inicio de sesión (en el caso Básico, enviará el encabezado WWW-Authenticate: Basic si el usuario aún no está autenticado).

puede establecer el 's $loginAction, AuthCompoment pero el valor predeterminado (y es aconsejable no romper las convenciones) al método login en el UsersController. Así, en primer lugar crear una plantilla vacía en View/Users/login.ctp, a continuación, añadir lo siguiente a su UsersController

class UsersController extends AppController { 

    public $components = array(
     'Session', 
     'Auth' => array(
      'authenticate' => array('Basic') 
     ) 
    ); 

    public function login() { 
     if ($this->Auth->login()) { 
      return $this->redirect($this->Auth->redirect()); 
     } else { 
      $this->Session->setFlash('Not able to login'); 
     } 
    } 

    public function logout() { 
     $this->redirect($this->Auth->logout()); 
    } 

} 
+0

Gracias, que funcionó! –

Cuestiones relacionadas