2010-12-31 27 views
6

Me gustaría comprobar, si la cuenta del usuario está activada al iniciar sesión, pero el componente de autenticación de Cake se encarga de iniciar sesión de una manera que no sé cómo controlar. Cake básicamente usa la función de inicio de sesión en blanco y no tengo idea de cómo verificar el valor de User.active.cakephp condiciones de inicio de sesión personalizado

Gracias de antemano

Respuesta

11

El AuthComponent tiene una propiedad para establecer condiciones adicionales como esta, llamado $ userScope.

basta con incluir esta línea en su beforeFilter) bloque de configuración de autenticación (:

$this->Auth->userScope = array('User.active' => true); 

Nota: Lo anterior se aplica a 1.x de la torta Para el uso 2.x:

$this->Auth->scope = array('User.active' =>true); 

A continuación, se puede dejar el método de inicio de sesión en blanco y el AuthComponent añadirá esta condición adicional cuando la autenticación del visitante.

Puede ver todas las propiedades adicionales aquí: http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#configuring-authentication-handlers

Si no se incluye este ámbito extra, entonces los usuarios inactivos todavía será capaz de iniciar una sesión y que tendría que ingrese a cabo en su método de inicio de sesión() después de verificar.

0

En el controlador de Usuarios, o donde quiera que desea colocarlo (la acción que el formulario de inicio de sesión enlaces a):

function login() { 
    if ($this->Session->read('Auth.User')) { 
     $active = $this->Auth->user('active'); 
     if ($active) { 
      //(do stuff) 
     } 
     else { 
      //(do other stuff) 
     } 
    } 
} 

Esto supone que hay un "activo" columna en su tabla de usuario que contiene verdadero o falso (o 1 o 0). $ this-> Auth-> user() le permite acceder a los datos del usuario registrado actualmente. Más información aquí: http://book.cakephp.org/view/1264/user

+0

Gracias por su respuesta, pero de alguna manera no funcionó para mí y, de todos modos, no me gusta la idea de permitir que el usuario inicie sesión y luego cerrarla si no está activo. Pero gracias de cualquier manera ;) – Elwhis

Cuestiones relacionadas