2010-03-30 27 views

Respuesta

12

Se utiliza cuando un usuario marca la casilla "Recordarme" en su sitio. Se genera un token para el usuario y se almacena en la tabla user_tokens.

Si nos fijamos en la clase Kohana_Auth_ORM en la función _login, se puede ver cómo se crea:

if ($remember === TRUE) 
    { 
     // Create a new autologin token 
     $token = ORM::factory('user_token'); 

     // Set token data 
     $token->user_id = $user->id; 
     $token->expires = time() + $this->config['lifetime']; 
     $token->save(); 

     // Set the autologin cookie 
     cookie::set('authautologin', $token->token, $this->config['lifetime']); 
    } 

Es utilizado por el AUTO_LOGIN() función también en la clase Kohana_Auth_ORM:

/** 
* Logs a user in, based on the authautologin cookie. 
* 
* @return boolean 
*/ 
public function auto_login() 
{ 
    if ($token = cookie::get('authautologin')) 
    { 
     // Load the token and user 
     $token = ORM::factory('user_token', array('token' => $token)); 

     if ($token->loaded() AND $token->user->loaded()) 
     { 
      if ($token->user_agent === sha1(Request::$user_agent)) 
      { 
       // Save the token to create a new unique token 
       $token->save(); 

       // Set the new token 
       cookie::set('authautologin', $token->token, $token->expires - time()); 

       // Complete the login with the found data 
       $this->complete_login($token->user); 

       // Automatic login was successful 
       return TRUE; 
      } 

      // Token is invalid 
      $token->delete(); 
     } 
    } 

    return FALSE; 
} 

Depende de usted utilizar correctamente esta capacidad dentro de su controlador de autorización. Soy relativamente nuevo en Kohana, pero puedo realizar una sencilla comprobación para redirigir un usuario si van al formulario de acceso y ya se registran en o pueden iniciar sesión de forma automática:

if (Auth::instance()->logged_in() || Auth::instance()->auto_login()) 
    Request::instance()->redirect('auth/'); 

El código para el módulo de autenticación ISN' demasiado difícil de entender Si eres nuevo en Kohana, es un buen punto de partida para ver cómo funciona el módulo ORM.

+0

Hola Brian Riehman, Gracias por volver a enviar la solicitud. Y sí, soy novato en el marco de Kohana. – Asif