【问题标题】:Generating JWT in Laravel Can Not Validate User在 Laravel 中生成 JWT 无法验证用户
【发布时间】:2015-09-23 13:29:54
【问题描述】:

我正在尝试使用 Laravel 设置 JWT。

我基本上是在关注 jwt 包和另一个页面的信息: https://github.com/tymondesigns/jwt-auth https://scotch.io/tutorials/token-based-authentication-for-angularjs-and-laravel-apps

我有一些不同之处,主要是用户模型称为 Human,但大多数情况下我遵循上面的示例

问题是我无法验证用户。每当我通过发布请求到达路线时,我都会收到 401 错误。所以我在 php artisan tinker 控制台中做了一些调查。如果我选择数据库中的第一个用户,检查他们的密码哈希就可以了,这很有效:

$human = App\Human::first();
Hash::check('12345', $human['password']); // true

但如果我尝试生成 JWT,它会失败。

JWTAuth::attempt(['email' => $human['email'], 'password' => '12345']); // false

我不确定从这里去哪里调试。

更新: 关键是我的“用户”表实际上被称为“人类”。我的数据库中有一个用户表,当我删除它时,我得到一个用户表不存在的错误。

我确实在我的 jwt 配置中更改了这一行:

'user' => 'App\Human',

为了反映我的“用户”模型被称为人类,我进入 laravel auth.php 并在那里设置我的模型。仍然当我调用 JWTAuth 尝试方法时,它会尝试访问“用户”表,而不是实际存储密码的“人类”表。

显然我可以更改表名,但这会使应用程序的另一部分变得丑陋。所以我想我需要的是一种配置 jwt-auth 以查看不同表的方法。

【问题讨论】:

  • 您找到可行的解决方案了吗?
  • 我们已将“用户”移回“应用/用户”模型。我更喜欢使用名为“humans”的表并使用名为“App\Human”的模型,但我不知道如何配置 JWT 包来执行此操作。
  • 你解决了这个问题吗?

标签: php laravel jwt


【解决方案1】:

哈希密码时可能没问题,试试这个

JWTAuth::attempt(['email' => $human['email'], 'password' => bcrypt('12345')]);

【讨论】:

  • 所有示例将密码发送到未加密的尝试方法。我添加了包含更多信息的更新。
猜你喜欢
  • 2016-12-30
  • 1970-01-01
  • 2019-09-08
  • 2017-04-03
  • 2022-07-05
  • 2017-09-18
  • 2020-05-11
  • 2017-05-26
  • 2015-06-24
相关资源
最近更新 更多