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

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 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年前 评论

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