我试图在Yii2上创建简单的项目。现在我正在创建用户功能。我已经用Gii创建了用户模型和CRUD。当我创建新用户或编辑时,模型以纯文本格式保存密码。我想覆盖此功能,以便能够以md5格式保存密码。
在Zend Framework中有类似的能力。 我有密码字段,当我想更改默认设置密码行为时,我刚刚在模型中创建了setPassword方法。 哪种方式对Yii2来说是正确的?
在我的User.php模型类中,我创建了setPassword($ password)方法,但它没有被执行(我检查它将var_dump放在里面)。
答案 0 :(得分:1)
load()
时,将调用来自SignupForm的ed方法signup()
。$user->setPassword($this->password);
设置新密码 - $this->password
是用户选择的原始纯文本密码。password_hash
属性 - 此散列密码存储在数据库中。setPassword()
来更改密码的哈希方式(但不建议这样做)。答案 1 :(得分:0)
您可以实施beforeSave
方法see here,并加密密码。
或者,您可以在调用actionCreate
之前使用$model->save()
方法在控制器中执行此操作。