Laravel - 如何检查数据库

时间:2017-03-10 18:05:10

标签: laravel authentication request bcrypt

我正在开发一个销售系统,每个用户都有一个帐户。要对用户进行身份验证,我使用bcrypt存储密码,并使用Laravel Auth库,如下所示:

$data = $request->only('user', 'password');        
if (\Auth::attempt($data)){
    #redirect dashboard
}

在销售点屏幕中,用户可以添加需要PIN的特殊产品(PIN是某些具有权限的用户的密码)。

当我拨打一个按钮点击以保存销售时,在我的Request类中我添加了这个验证(我只需要检查是否有一些特殊产品,如果,检查必须在DB中匹配的PIN),我使用这段代码:

    $allowed_pin = true;
    foreach (Request::get('products') as $product) {
        if($product["special_perm"] === "1"){
            $pin = $product["pin"];
            $user = User::where('password', '=', bcrypt($pin))->first();
            if ($user) {
                $allowed_pin = true;
            } else {
                $allowed_pin = false;
            }
        }
    }

问题是当我在Request类中比较密码时,如果我使用dd()它会告诉我" $ 2y $ 10 $ AasS5 / FTWv28PmYuABfqve4Ao6m1U9zxdUE6ZoHJWcfpn19sd4wcG"数据库中的真实密码是" $ 2y $ 10 $ DmefHppecIjuanjRbcj82OPyjhi.L0 / 4YGd62LYCvkDTGjXxL25fG" 他们没有匹配。 Auth类是否使用与bcrypt不同的内部加密?

1 个答案:

答案 0 :(得分:1)

要将纯文本密码与加密密码进行比较,请使用HashMap

查看Laravel文档:https://laravel.com/docs/5.4/hashing