Laravel 中的密码验证总是返回失败(Hash::check)

Posted

技术标签:

【中文标题】Laravel 中的密码验证总是返回失败(Hash::check)【英文标题】:Password verify always returns fail in Laravel (Hash::check) 【发布时间】:2018-05-24 00:15:00 【问题描述】:

我在 Laravel 5.5 中尝试通过 Hash::check 验证发布密码时遇到问题

我制作了一个带有密码列的帖子表(在本例中为销售表)。当我尝试创建帖子时,它运行良好,密码经过哈希处理,也属于登录用户。然后在当前帖子页面上是一个带有输入(密码)的按钮,用于删除该特定帖子,但条件始终为 false。

我的控制器 public function destroy(Request $request, $id)

$input_pass = request('input_password');

    $sale = Sale::find($id);
    $hashed = $sale->password;

    // Check if sale password is correct
    if (Hash::check($input_pass, $sale->password)) 

    $sale->delete();

     else 
        // something else to do
    

对于 post 存储,我使用 bcrypt 方法对密码进行哈希处理。我也一直在尝试 dd('sale->password') 引用销售表中的列(正确)和 dd('$input_pass') 引用以 DELETE 形式输入的密码(也是正确的) - 所以我有点疑惑,为什么pass不匹配。

【问题讨论】:

贴出你加密密码的代码 $sale = Sale::forceCreate([ 'sale_title' => request('sale_title'), 'password' => bcrypt('password'), 'user_id' => auth()- >user()->id ]); 【参考方案1】:

从您的评论中,我发现您最初对密码进行哈希处理并将其保存在数据库中存在逻辑错误。

您将字符串password 传递给bcrypt,实际上它应该类似于request('password')

改变

'password' => bcrypt('password'),

'password' => bcrypt(request('password')),

【讨论】:

以上是关于Laravel 中的密码验证总是返回失败(Hash::check)的主要内容,如果未能解决你的问题,请参考以下文章

laravel怎么正向验证经过hash加密的密码

Laravel Jwt 身份验证尝试总是返回 false

laravel 7 sanctum Hash::check 总是返回 false

Jwt 身份验证问题 - 凭据无效

Laravel 5 中间件身份验证总是失败并重定向到登录

Laravel 验证登录表单验证在密码确认中失败?