为什么我的密码没有哈希?

时间:2012-04-08 03:01:17

标签: cakephp

所以,我环顾四周并检查了SO。我的问题与此类似:Why is the CakePHP authentication component not hashing my password?,但我无法让它发挥作用。

我的密码在注册时未加载。

在我的用户控制器中:

public function beforeFilter() {
    parent::beforeFilter();
    $this->Auth->allow('register', 'logout'); 
    $this->Auth->fields = array('username' => 'email', 'password' => 'password');
}

查看:

<?php echo $this->Form->create('User'); ?>
    <fieldset>

        <?php
        echo $this->Form->input('email');
        echo $this->Form->input('password');
        ?>
    </fieldset>
<?php echo $this->Form->end(__('Submit'));?>

我有一些email字段的验证器。问题是,密码以明文形式存储。我想 Auth->fields行应该注意这一点,但事实并非如此。我知道,如果username password$data中的{{1}}都填充了,那么CakePHP只有哈希值,但我清楚地重新映射了它,所以它应该散列正确吗?

1 个答案:

答案 0 :(得分:0)

如果您使用的是CakePHP 2.x,Auth将不再自动哈希密码

来自http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html

的文档
  

AuthComponent不再自动散列每个密码   找。这被删除了,因为它做了许多常见的任务,如   验证困难。你永远不应该存储纯文本密码,和   在保存用户记录之前,您应始终对密码进行哈希处理。您   可以使用静态AuthComponent :: password()来哈希密码   拯救他们。这将使用为您配置的散列策略   应用