【发布时间】:2021-01-27 08:40:25
【问题描述】:
我有一个带有 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>
有什么建议吗?谢谢。
【问题讨论】:
-
您是否检查过您的数据是否接收到 i 控制器
-
@KamleshPaul 我试过 $uname = $request->all('username');它返回 null。
-
不,我说
dd($request->all())你试过了吗? -
@KamleshPaul 你能告诉我如何在 laravel 控制器中处理 ajax 请求吗?我认为这是问题所在,我的用户名和密码在控制器中返回 null。
-
删除
contentType: "application/json", Accept: "application/json", dataType: 'json',这些并尝试
标签: ajax laravel laravel-passport laravel-api