0

所以,我环顾四周并检查了SO。我的问题与此类似:为什么 CakePHP 身份验证组件没有对我的密码进行哈希处理?除了我无法让它工作。

我的密码在注册时未散列。

在我的用户控制器中:

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条线应该解决这个问题,但事实并非如此。我知道 CakePHP 只有在 和 都被填充时才会散列,username但我清楚地重新映射了它,所以它应该散列正确吗?password$data

4

1 回答 1

0

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

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

AuthComponent 不再自动散列它可以找到的每个密码。之所以将其删除,是因为它使验证等许多常见任务变得困难。您永远不应该存储纯文本密码,并且在保存用户记录之前,您应该始终对密码进行哈希处理。您可以在保存密码之前使用静态 AuthComponent::password() 对密码进行哈希处理。这将为您的应用程序使用配置的散列策略。

于 2012-04-08T03:20:56.053 回答