我正在为博客使用Laravel 5.8。我正在尝试创建用户身份验证API。我有一个带有三个字段(名称,电子邮件,密码)的用户模型。 出于测试目的,我使用laravel tinker创建用户。我已使用以下命令创建新用户:
$ php artisan tinker
Psy Shell v0.9.9 (PHP 7.2.19-0ubuntu0.18.04.1 — cli) by Justin Hileman
>>> $u = new App\User()
=> App\User {#2989}
>>> $u->name = 'Sanket'
=> "Sanket"
>>> $u->email = 'sanket@sanket.com'
=> "sanket@sanket.com"
>>> $u->password = Hash::make('sanket')
=> "$2y$10$NbF1pA0T8cc6orqUcR2u/.FR0iw5mqNW8D3XO3/GfSrsns6VI8WKO"
>>> $u->save()
=> true
现在,当我尝试使用Hash :: check()验证密码时,它总是返回false。
>>> Hash::check('sanket', $u->password)
=> false
我不知道为什么这次会发生这种情况。我已经研究过Laravel 5.6。它从来没有给我这样的错误。
我尝试使用以下不同方法进行验证:
首先,我在修补程序中使用以下命令检索了用户:
>>> $u = User::where('email', 'sanket@sanket.com')->first()
[!] Aliasing 'User' to 'App\User' for this Tinker session.
=> App\User {#3015
id: 31,
name: "Sanket",
email: "sanket@sanket.com",
created_at: "2019-06-23 02:49:40",
updated_at: "2019-06-23 02:49:40",
deleted_at: null,
isAdmin: null,
}
然后我检查了密码
>>> $u->password
=> "$2y$10$U15hLUgd/X4a5hOuR78RKuo86jvzIerCJqjvg0fIJ8toqIUGZnreW"
然后我创建了一个变量来存储哈希密码
>>> $hash = Hash::make('sanket')
=> "$2y$10$onDN6nLW0e1IMLJOl77rWuC9ZQHMwPZKSFn5ok/kfcepRGZuufjWS"
然后我尝试将此哈希设置给用户
>>> $u->password = $hash
=> "$2y$10$onDN6nLW0e1IMLJOl77rWuC9ZQHMwPZKSFn5ok/kfcepRGZuufjWS"
>>> $u->save()
=> true
但是现在散列密码不同于步骤2和步骤3
>>> $u->password
=> "$2y$10$CkkCEUkS16ZPW4takJdl.e7uKvJWgiAOGEmUBgeFYtjHJ036lHW3y"
我也尝试了以下方法,并且可以按预期工作。
>>> Hash::check('sanket', Hash::make('sanket'))
=> true
仅当我将哈希密码分配给用户时,问题才会出现。
怎么了?