我有一个用户模型、一个用户控制器和一个使用用户模型的帐户控制器(帐户控制器在创建帐户、登录、注销时使用)。
一切正常,除了 AccountController 中的 beforeSave 函数。我正在尝试使用 beforeSave 对我的密码进行哈希处理,但它不起作用(密码保存在数据库中,未经哈希处理)。
public function beforeSave() {
parent::beforeSave();
if (isset($this->request->data['User']['password'])) {
$this->request->data['User']['password'] = sha1($this->request->data['User']['password']);
}
return true;
}
几点注意事项:
- 我使用“sha1”对密码进行哈希处理,因为我正在将旧系统转换为 CakePHP(旧系统使用 sha1 对密码进行哈希处理)
- 即使我
return false;
仍然执行保存功能(我认为不应该是这种情况 - 打电话
debug($this->request->data)
给我什么 - 我在我的 UsersController 中添加了相同的 beforeSave 函数,但效果不佳
我认为在我的情况下beforeSave没有被调用,我只是不知道为什么。
已解决: beforeSave 函数必须进入模型内部,这是我现在的 beforeSave 函数:
public function beforeSave($options = array()) {
parent::beforeSave();
$this->data['User']['password'] = sha1($this->data['User']['password']);
return true;
}