首页 > 解决方案 > Laravel 7 - 如何使“记住我”功能正常工作?

问题描述

我正在尝试使用在我的网站中实现记住我的功能,Auth::viaRemember()但它总是返回一个false. 是什么原因造成的以及如何解决这个问题?

remeber_token 生成并将其存储在数据库中。

这是我尝试过的事情:

  1. 在中将值'expire_on_close'false更改为trueconfig/session.php
  2. 清除 cookie 和 google chrome 浏览器缓存,然后重新启动我的浏览器
  3. 运行php artisan config:cachephp artisan route:clear
  4. 登录并记住我检查然后注销(查看凭据是否已保存)。

这是我login里面的方法代码LoginController.php

public function login(Request $request)
{
    $this->validate($request, [
        'email' => 'required|email',
        'password' => 'required',
    ]);

    $remember = $request->has('remember') ? true : false;

    if (Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password')], $remember))
    {
        if(Auth::viaRemember())
        {
            dd("remembered successfully");
        }else{
            dd("failed to remember");
        }

        return view('home');
    }else{
        return back()->with('error','your username and password are wrong.');
    }
}

这是我的文件片段代码login.blade.php

<div class="form-group row">
     <div class="col-md-6 offset-md-4">
          <div class="form-check">
               <input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>

               <label class="form-check-label" for="remember">
                      {{ __('Remember Me') }}
               </label>
          </div>
      </div>
  </div>

这是登录页面以防万一:

在此处输入图像描述

登录没有问题,成功重定向到首页。唯一的问题是凭据没有显示,或者登录表单不记得之前登录的凭据,并选中了记住我。

这篇文章有同样的问题,它的参考资料/帖子包括:
Auth::viaRemember() 在 laravel 5.4 中不起作用(意味着即使在成功登录后也总是返回 false),但不幸的是,所提供的解决方案都不适合我..

附言

到目前为止,我正在使用 Laravel Framework 7.14.1 和最新的 google chrome 版本(版本 83.0.4103.97(官方构建)(64 位))

标签: phplaravelauthenticationremember-me

解决方案


推荐阅读