2014-11-24 62 views
1

我想用記住我來創建登錄腳本。我是laravel的新手,根據我的搜索,我發現用255 varchar創建remember_token並在用戶表中設置爲NULL,在我的用戶模型中創建了三個函數。Laravel記得我與Sentry的功能

#user.php的

public function getRememberToken() 
{ 
    return $this->remember_token; 
} 

public function setRememberToken($value) 
{ 
    $this->remember_token = $value; 
} 

public function getRememberTokenName() 
{ 
    return 'remember_token'; 
} 

becouse我使用Laravel哨兵認證這就是爲什麼在我的控制器

#AuthController.php

public function postLogin() 
{ 
    $input = Input::all(); 
    $remember = (Input::has('remember')) ? true : false; 
    Sentry::authenticate([ 
      'email' => $input['email'], 
      'password' => $input['password'], 
     ], $remember); 
    Flash::addSuccess('You have been logged in successfully.'); 
    return Redirect::intended(URL::route('profile_connect'))->withInput(); 
} 
    catch(Exception $e){ 
     Flash::addError('That username or password is incorrect.'); 
     return Redirect::route('auth_login'); 
} 

現在,如果我登錄並選擇記住我複選框,然後登錄成功完成,但用戶表中的我的remember_token字段仍爲空(空)。有人可以告訴我,我從哪裏錯了,哪裏需要改變。提前致謝。

回答

1

如果記憶標誌爲真,則Sentry的authenticate method不會將值存儲在remember_token字段中,而是設置cookie。

從技術上講,login()方法由authenticate()調用並設置cookie。

這裏的relevant code

public function login(UserInterface $user, $remember = false) 
{ 
    ... (snip) 

    if ($remember) 
    { 
     $this->cookie->forever($toPersist); 
    } 

}