2014-11-24 80 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); 
    } 

}