【发布时间】:2015-08-28 04:32:29
【问题描述】:
如果更改之前,我正在尝试匹配当前密码。为此,我使用了 Auth 密码,然后将其与当前密码匹配。但它总是返回错误的。
这是我尝试过的控制器代码
if ($this->request->is(['patch', 'post', 'put'])) {
$obj = new DefaultPasswordHasher;
$postpassword = $obj->hash($this->request->data['current_password']);
if($this->Auth->user('password') == $postpassword)
{
// code to save change password.
}
else
$this->Flash->error(__('The password you have entered does not match !'));
}
这里 $postpassword 哈希工作正常,但 $this->Auth->user('password') 返回值 1。我怎样才能获得身份验证密码并与 $postpassword 匹配?
编辑
我有一些知识,然后我就这样解决了这个问题
$password = '$2y$10$pHbHu6xhNAw/v5HuQ1DSjOm5MPkqZukD1.532ACu7YLgD1ef9K7i2';
if ($this->request->is(['patch', 'post', 'put'])) {
$obj = new DefaultPasswordHasher;
$postpassword = $obj->check($this->request->data['current_password'], $password);
if($postpassword==1)
$this -> set('password',"hello");
}
现在我只需要控制器中的$this->Auth->user('password');。
cakephp auth 组件中可以吗?
【问题讨论】:
-
我建议不要在控制器层中放置太多逻辑;)查看this 以及模型顶部的简单行为如何使其成为简单的单线。干燥和清洁。您现在只需调用 save() 即可完成其余的工作。
标签: cakephp cakephp-3.0