2010-03-30 14 views

cevap

12

Bir kullanıcı sitenizdeki 'Beni hatırla' kutusunu işaretlediğinde kullanılır. Kullanıcı için bir belirteç oluşturulur ve user_tokens tablosunda saklanır. Eğer _login fonksiyonunda Kohana_Auth_ORM sınıfında bakarsak

, bunun nasıl oluştuğunu görebilirsiniz: Kohana_Auth_ORM sınıfında da

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

O (auto_login tarafından kullanılır) fonksiyonu:

/** 
* 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; 
} 

Yetkilendirme denetleyicinizde bu özelliği doğru kullanmak size kalmış. Ben Kohana nispeten yeni, ama onlar giriş formuna gidip Zaten giriş veya otomatik olarak giriş yapabilirsiniz eğer kullanıcıyı yönlendirmek için basit bir kontrolü gerçekleştirmek:

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

kod Auth modülü değilmi için Anlamak çok zor. Kohana için yeniyseniz, ORM modülünün nasıl çalıştığını görmek için iyi bir başlangıç ​​noktasıdır.

+0

Merhaba Brian Riehman, repply için teşekkürler. Ve evet ben Kohana çerçevesi için yeni biriyim. – Asif