Laravel记得Sentry的功能

时间:2014-11-24 10:27:20

标签: laravel cartalyst-sentry

我想用记住我创建登录脚本。我是laravel的新手,根据我的搜索,我发现在我的用户表中创建了带有255 varchar并在其设置为NULL的remember_token,在我的用户模型中我创建了三个函数。

#user.php的

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

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

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

因为我正在使用Laravel Sentry进行身份验证,这就是为什么在我的控制器中

#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字段仍为空(null)。有人可以告诉我我错在哪里以及我需要改变的地方。提前谢谢。

1 个答案:

答案 0 :(得分: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);
    }

}