在Laravel中生成JWT无法验证用户

时间:2015-07-06 11:55:30

标签: php laravel jwt

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

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

我有一些差异,主要是用户模型被称为人类,但在大多数情况下我都遵循上面的例子

问题是我无法验证用户。每当我使用帖子请求到达路线时,我都会收到401错误。所以我在php工匠修补控制台做了一些调查。如果我选择我的数据库中的第一个用户检查他们的密码哈希它没关系,这有效:

$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尝试方法时,它会尝试访问'users'表而不是实际存储密码的'human'表。

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

1 个答案:

答案 0 :(得分:1)

散列密码时可能没问题,试试这个

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