1

我正在使用 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”。如何解决这个错误?

4

3 回答 3

2

只需在模型文件中创建一个用于加密密码的函数:

 public function beforeSave($options = array()) {
    $this->data['User']['password'] = AuthComponent::password(
      $this->data['User']['password']
    );
    return true;
}
于 2015-09-23T06:32:48.600 回答
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 方法,然后在控制器中进行插入。

于 2013-04-25T12:02:32.927 回答
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']);
于 2013-05-01T13:07:51.223 回答