如何使用默认安全方法在cakephp中对密码进行编码?

时间:2013-04-25 07:31:16

标签: security cakephp passwords cakephp-2.0

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

3 个答案:

答案 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']);