为什么我的Laravel Passport Auth无法在浏览器中工作?

问题描述

我有一个带有Passport身份验证的新laravel应用程序。我的登录代码在我的失眠应用程序中运行完美。

登录

public function login(Request $request)
{
   if(Auth::attempt(['username' => request('username'),'password' => request('password')]))
   { 
      $user = Auth::user(); 
      $success['token'] =  $user->createtoken('AppName')-> accesstoken; 
      return response()->json(['authstat'=>'Authorized','user'=>Auth::user()->id,'access_token'=>$success]); 
   } 
   else
   { 
      return response()->json(['authstat'=>'Unauthorized']); 
   } 
}

失眠测试

http://api-auth.test/api/auth/login

//json request 
{
    "username":"wen","password":"12345678"
}

,但是当我在浏览器中尝试使用它时,即使我输入了正确的用户名密码,它也会始终返回Unauthorized。这是前端的ajax请求。

<script type="text/javascript">
        
    $("#loginfrm").on("submit",function(e){
        event.preventDefault();
        var username = $("#username").val();
        var password = $("#password").val();
        
        $.ajax({
            type: "POST",url: "http://api-auth.test/api/auth/login",contentType: "application/json",Accept: "application/json",dataType: 'json',data:{
                "_token": "{{ csrf_token() }}","username": username,"password": password
            },complete: function (data) {
                console.log(data.responseJSON["authstat"]);
            }
        });
    });
      
</script>

有什么建议吗?谢谢。

解决方法

您的登录方法期望输入request('username'),但是$ .ajax却发送email