在AJAX调用中使用Auth :: attempt()进行Laravel身份验证

我正在尝试通过从login.blade.php到LoginController.php的AJAX调用来对用户进行身份验证,以进入authenticate()函数。代码如下:

login.blade.php中的Axios代码

(function(){
   document.querySelector("#loginForm").addEventListener("submit", function(e){
      e.preventDefault()
      axios.post("login/tos", {
          'mail'     : document.querySelector('#mail').value,
          'password' : document.querySelector('#password').value,
          'rememberId' : document.querySelector('#rememberId').value,
      })
      .then(function(response){
          console.log("Success")
          console.log(response)
          clearError()

          location.reload();
      })
    })
})();

经过一些逻辑上的计算后,进入LoginController.php中的authenticate()函数

public function authenticate(LoginUser $request)
  {
    $credentials = [
      "mail" => $request->mail,
      "password" => $request->password
    ];

    echo " |OUTSIDE: ";
    echo ((Auth::check()) ? "AUTH TRUE " : "AUTH FALSE ");

    if (Auth::attempt($credentials)) {

      echo " |INSIDE: ";
      echo ((Auth::check()) ? "AUTH TRUE " : "AUTH FALSE ");

      $request->session()->regenerate();

      return response(['success' => true]);
    }
  }

当我运行此代码时,页面将重新加载,但用户未登录。 但是,重新加载页面之前,控制台的输出为:

数据:“ |外部:AUTH FALSE |内部:AUTH TRUE”

因此,我的假设是Auth :: attempt()有效,但是该会话已删除。我该如何克服这个问题?

我是PHP和JS的新手,对会话的了解有限。感谢您能提供的任何帮助。

评论