JWT身份验证问题-无效的凭证

时间:2019-12-17 14:00:45

标签: php api authentication laravel-5 jwt-auth

当我在Laravel中对创建的用户使用auth时,它可以工作,但是...当我更改为数据库时,无法再对其进行验证。

用bcrypt加密用户密码,当执行 Hash :: check()时,返回值为 true ,但是 JWT验证始终返回我错误。

我在使用以下代码时遇到问题:

$credentials = $request->only('email', 'senha');
try {
   if(! $token = JWTAuth::attempt($credentials)){
     return response()->json(['error' => 'invalid_credentials'], 400);
   }
}catch(JWTException $e){
   return response()->json(['error' => 'could_not_create_token'], 500);
}

return response()->json([
  'access_token'  => $token,
  'token_type'    => 'bearer',
  'expires_in'    => auth()->factory()->getTTL() * 60
]);

我从资源页面本身检查了诸如this之类的文章,而另一些则找不到解决方案!

laravel版本是5.2!

编辑

数据库中的字段称为“电子邮件”和“ senha”(pt-br语言)。当我更改字段时,错误是相同的!

2 个答案:

答案 0 :(得分:0)

JWTAuth::attempt($credentials)部分将查找输入值'email'和'passowrd'。

因此,您必须通过$request->only('email', 'password');而不是$request->only('email', 'senha');

答案 1 :(得分:0)

我通过使用Laravel标准在银行中创建一个新表解决了这个问题。