为什么相同的密码,使用 bcrypt 加密后密码不相同?

我需要自己手工验证,结果每次密码都不相同
if ($userEmail->user->password == bcrypt($request->password)) {
die('密码相同');
}else {
die('密码不相同');
}

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 4

我发现,每次刷新都不一样,我要怎么自己手工验证密码是否正确

5年前 评论

根据文档 password_hash

PASSWORD_BCRYPT 支持的选项:

salt(string) - 手动提供散列密码的盐值(salt)。这将避免自动生成盐值(salt)。
省略此值后,password_hash() 会为每个密码散列自动生成随机的盐值。这种操作是有意的模式。

我个人一般直接使用 password_hashpassword_verify 来哈希密码以及验证密码,而没有直接使用 bcrypt

5年前 评论

使用 attempt

$data = [
   'account' => $request->account,
   'password' => $request->password
];

$rightUser = \Auth::attempt($data);
5年前 评论

哈希,密码校验,按官方文档改造下:

if (Hash::check($request->password, $userEmail->user->password)) {
    // 密码匹配
}

我自己一般在模型里面加入一个校验密码的方法

   /**
     * 确认密码是否正确
     *
     * @param string $password
     * @return bool
     */
    public function verifyPassword(string $password): bool
    {
        return Hash::check($password, $this->password);
    }
5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!