CakePHP 3.0 - 在更改密码时将数据库密码与旧密码进行比较

时间:2015-06-11 12:16:53

标签: hash passwords cakephp-3.0

我正在开发CakePHP 3.0,我想将数据库密码与“更改密码”功能中表单中输入的旧密码进行比较。但是我无法这样做,因为即使我们使用相同的密码,密码也会被哈希,并且每次哈希密码都不同。

请帮助我。

提前致谢, 混战

1 个答案:

答案 0 :(得分:3)

我会在你的UsersTable的验证器中执行此操作。

的src /型号/表/ UsersTable.php

$validator
            ->notEmpty('current_password')
                ->add('current_password', 'custom', [
                    'rule' => 

                    function($value, $context) {
                        $query = $this->find()
                                ->where([
                                    'id' => $context['data']['id']
                                ])
                                ->first();

                        $data = $query->toArray();

                        return (new DefaultPasswordHasher)->check($value, $data['password']);
                    },
                    'message' => 'Current password is incorrect!'
                ]);

Custom validation rules