0

我正在尝试实现身份验证登录并注册 cakephp 3.7.4

我为 UsersController 添加方法使用了以下代码

public function add()
{
    $this->viewBuilder()->setLayout('login');
    $user = $this->Users->newEntity();
    if ($this->request->is('post')) {
        $post = $this->request->getData();
        $post['created'] = date('Y-m-d H:i:s');
        $post['modified'] = date('Y-m-d H:i:s');
        $user = $this->Users->patchEntity($user, $post);
        if ($this->Users->save($user)) {
            $this->Flash->success(__('The user has been saved.'));
            return $this->redirect(['action' => 'login']);
        }
        $this->Flash->error(__('Unable to add the user.'));
    }
    $this->set('user', $user);
}

但它不能以哈希格式保存密码

我也创建了实体并使用了这个功能,但它也没有帮助我

 class User extends Entity
 {
   protected $_accessible = [
     'email' => true,
    'password' => true
  ];
 protected $_hidden = [
    'password'
 ];
 protected function _setPassword($password){
  return(new  DefaultPasswordHasher)->hash($password);
 }
}
4

2 回答 2

0

我安装了一个全新的 Cake 3.7.4 安装,烘焙了一个users表、users控制器和users表/实体。用户类的以下代码在将密码写入数据库之前成功地对密码进行了哈希处理。请与您的代码进行比较。

namespace App\Model\Entity;

use Cake\Auth\DefaultPasswordHasher;
use Cake\ORM\Entity;

class User extends Entity
{
    protected $_accessible = [
        'email' => true,
        'password' => true,
        'modified' => true,
        'created' => true
    ];
    protected $_hidden = [
        'password'
    ];

    protected function _setPassword($password)
    {
        return (new DefaultPasswordHasher())->hash($password);
    }
}
于 2019-05-17T14:47:27.000 回答
0

只需使用括号DefaultPasswordHaser()

return(new  DefaultPasswordHasher())->hash($password);
于 2019-11-03T13:19:59.980 回答