2010-03-30 47 views

回答

12

當用戶選中您網站上的「記住我」框時,會使用它。令牌爲用戶生成並存儲在user_tokens表中。

如果你看一下在_login功能Kohana_Auth_ORM類,你可以看到它是如何創建的:

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

它是由AUTO_LOGIN使用()功能也在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; 
} 

您需要在您的授權控制器內正確使用此功能,由您決定。我是比較新的Kohana的,但我進行簡單的檢查,如果他們去登錄表單,並已登錄,也可以自動登錄到重定向用戶:

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

代碼爲驗證模塊ISN」太難理解了。如果您是Kohana的新手,那麼瞭解ORM模塊的工作原理是一個很好的起點。

+0

嗨,Brian Riehman,謝謝你的重新申請。是的,我是Kohana框架的新手。 – Asif 2010-03-31 04:54:49