我使用哈希检查来比较用户输入的当前密码和存储在数据库(Bcrypt)中的当前密码
这是我的源代码
$user = User::findOrFail($request->id);
if (Hash::check($request->password, $user->password)) {
$user->fill([
'password' => Hash::make($request->newPassword)
])->save();
$request->session()->flash('success', 'Password changed');
// return redirect()->route('your.route');
echo "Hash match";
} else {
$request->session()->flash('error', 'Password does not match');
// return redirect()->route('your.route');
echo "Hash does not matched";
}
我的问题是Hash:check总是返回false(“哈希不匹配”)
我将变量放在哈希检查中
Hash::check(new password plain text, bcrypt value in db)
在调用哈希检查之前。我尝试打印变量以调查为什么它不起作用。我发现新密码的纯文本已经发送,并且我也已经从数据库中获取了bcrypt密码。一切看起来不错,应该可以工作。我不知道我的错是什么。我尝试了许多不适用于本网站的问题,因此在该站点上遵循很多主题来解决我的问题。任何人,请帮助我。
谢谢。
答案 0 :(得分:0)
如果将它与auth提供的默认登录控制器一起使用,则无需使用它。它是由laravel自己自动完成的。
答案 1 :(得分:-1)
您使用了错误的参数顺序。
尝试一下,
if (Hash::check($user->password, $request->password))