Laravel记得我与哨兵的功能



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

#User.php

public function getRememberToken()
{
    return $this->remember_token;
}
public function setRememberToken($value)
{
    $this->remember_token = $value;
}
public function getRememberTokenName()
{
    return 'remember_token';
}

因为我正在使用 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字段仍然为空(null)。有人可以告诉我我错在哪里,哪里需要改变。提前谢谢。

如果 remember 标志为 true,Sentry 的身份验证方法不会在 remember_token 字段中存储值,而是设置 cookie。

从技术上讲,login() 方法由 authenticate() 调用并设置 cookie。

以下是相关代码:

public function login(UserInterface $user, $remember = false)
{
    ... (snip)
    if ($remember)
    {
        $this->cookie->forever($toPersist);
    }
}

最新更新