我试图哈希密码及其工作正常。但是当插入或更新到mysql数据库时,我必须只保存哈希密码。
Controller.php (calling below method in add() method)
public function beforeSave() {
App::uses('Utitlity','Security');
if(!empty($this->request->data['Mailinglist']['Password'])) {
$this->request->data['Mailinglist']['Password'] = Security::hash($this->request- >data['Mailinglist']['Password']);
}
return true;
}
但是在上面的代码中,原始密码存储在数据库中,而不是哈希值。请指导我。
答案 0 :(得分:3)
http://book.cakephp.org/2.0/en/models/callback-methods.html#beforesave
您应该使用$this->data
代替$this->request->data
。
确保尝试debug($this->data);
public function beforeSave() {
App::uses('Utitlity', 'Security');
if (!empty($this->data['Mailinglist']['Password'])) {
$this->data['Mailinglist']['Password'] = Security::hash($this->data['Mailinglist']['Password']);
}
return true;
}
答案 1 :(得分:1)
仅供参考,
$ this->数据已被弃用。所以现在你应该使用$ this-> request-> data。
参考:http://book.cakephp.org/2.0/en/appendices/2-0-migration-guide.html#controller
答案 2 :(得分:0)
您应该在相关模型中使用Save方法之前。并使用。访问数据
$this->data['Mailinglist']['Password']
不是$this->request->data['Mailinglist']['Password']