CakePHP 3.0 - Compare Database Password with the o

2019-05-07 13:50发布

I am working on CakePHP 3.0 and I would like to compare the database password with the old password entered in the form in "Change Password" functionality. But I am not able to do so since the password is hashed and the hashed password is different every time even if we use the same password.

Please help me in this.

Thanks in advance, Melee

1条回答
对你真心纯属浪费
2楼-- · 2019-05-07 14:37

I would do this in the validator of your UsersTable.

src/Model/Table/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

查看更多
登录 后发表回答