【问题标题】:Laravel remember me functionality with SentryLaravel 使用 Sentry 记住我的功能
【发布时间】:2015-02-06 09:36:03
【问题描述】:

我想使用记住我来创建登录脚本。我是 laravel 的新手,根据我的搜索,我发现使用 255 varchar 创建 remember_token 并在我的 users 表和我的 User 模型中设置为 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 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)。有人可以告诉我哪里错了,哪里需要改变。提前致谢。

【问题讨论】:

    标签: laravel cartalyst-sentry


    【解决方案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);
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2013-10-07
      • 2015-07-13
      • 2013-09-04
      • 2021-10-18
      • 2016-10-12
      • 2015-10-10
      • 2011-02-26
      • 1970-01-01
      • 2016-06-23
      相关资源
      最近更新 更多