我有我的经过身份验证的用户,为了调试,我试图使用解密显示他的密码(因为它使用 encrypt()
进行了加密。
为了简化事物,我创建了一个新的路由/test
,我可以看到身份验证的用户的加密密码:
Route::get('/test', function() {
dd(Auth::user()->password)
});
这返回我:$2y$10$gdhYnCekBownWU62OitC6uSwoONfDWGO23FnaVwIgFPAeJI9L6DEa
但是,如果我尝试使用,它会给我带来这个错误:
Route::get('/test', function() {
dd(decrypt(Auth::user()->password))
});
decryptexception:有效载荷无效。
我尝试四处搜索这个问题,我发现的两件事是:
1)"确保应用程序密钥是正确的。"它以前在那里,但是可以肯定的是,我再次运行php artisan key:generate
。什么都没有改变。
2)"这是CSRF问题"。我从Web中的中间件内核禁用了CSRF,也没有任何改变。而且我没有使用发布请求,所以我怀疑这是我的问题。
我需要它,因为场景看起来像这样:我需要解密密码,因为我会事先使用此方法生成一个随机密码,并将其保存到数据库中;我想保持这种方法。
$randomPassword = rand(111111,999999);
$user->password = encrypt($randomPassword);
$user->save();
有人知道这是什么原因还是如何克服?
你不能(链接)。密码没有加密,它们被哈希。这是一种方法,一旦被哈希,它就不会被束缚。
您要做的是应该避免的事情。我想不出任何用户需要解密用户密码的用例。我认为您需要提出一种新策略,也许是从以下用户中获取密码:lastname/yearofbirth