我正在使用cakephp2。我想在保存到数据库之前对我的密码进行编码。这些代码在我的模型中用作
App::uses('AppModel', 'Model');
class User extends AppModel {
function registration($name,$uname,$pass){
$newpass = AuthComponent::password($pass);
$reg=array(
'name'=>$name,
'uname'=>$uname,
'password'=>$newpass,
'status'=>'1'
);
$this->save($reg);
}
} ?>
但是在插入时我收到一条错误消息, “错误:未找到类'AuthComponent' 文件:C:\ xampp \ htdocs \ blog \ app \ Model \ User.php“。 如何解决这个错误?
答案 0 :(得分:2)
只需在模型文件中创建加密密码的功能:
public function beforeSave($options = array()) {
$this->data['User']['password'] = AuthComponent::password(
$this->data['User']['password']
);
return true;
}
答案 1 :(得分:1)
第一步是确保添加了Auth组件,你可以在appController.php中执行此操作
public $components = array(
'Auth'
);
然后使用您的代码
App::uses('AppModel', 'Model');
class User extends AppModel {
function registration($name,$uname,$pass){
$newpass = AuthComponent::password($pass);
$reg=array(
'name'=>$name,
'uname'=>$uname,
'password'=>$newpass,
'status'=>'1'
);
$this->save($reg);
}
我认为在模型中进行插入查询不是一个好习惯。相反,更好的方法是在user.php(model)中使用beforesave方法,然后在控制器中插入。
答案 2 :(得分:1)
最好将记录保存在Controller File的表中。只需在AppController文件中创建加密密码的函数
public function encryptPassword($sPassword = null) {
return AuthComponent::password($sPassword);
}
只需在保存记录
之前调用该功能$this->request->data['User']['password'] = $this -> encryptPassword($this->request->data['User']['password']);