Jwt 身份验证问题 - 凭据无效

Posted

技术标签:

【中文标题】Jwt 身份验证问题 - 凭据无效【英文标题】:Jwt authentication problem - invalid credentials 【发布时间】:2020-04-10 01:16:26 【问题描述】:

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

用户的密码是用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 语言)。当我更改字段时,错误是一样的!

【问题讨论】:

您可能想尝试传递密码字段以尝试作为名称“密码”,即使它没有被命名,这通常是用户提供者知道哪个字段应该是哈希检查 【参考方案1】:

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

所以在凭证中你必须通过$request->only('email', 'password'); 而不是$request->only('email', 'senha');

【讨论】:

数据库中的字段称为“电子邮件”和“senha”(pt-br 语言)。当我更改字段时,错误是一样的!【参考方案2】:

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

【讨论】:

以上是关于Jwt 身份验证问题 - 凭据无效的主要内容,如果未能解决你的问题,请参考以下文章

Django Rest Framework JWT 未提供身份验证凭据

混合 JWT 和 Windows 身份验证。 jwt 失败后弹出凭据

djangorestframework-jwt 未提供身份验证凭据

Django Rest Framework JWT“未提供身份验证凭据。”

PayPal PHP SDK:由于身份验证凭据无效或缺少授权标头,身份验证失败

请求具有无效的身份验证凭据。预期的 OAuth 2 访问令牌、登录 cookie 或其他有效的身份验证凭据 automl