所以,我环顾四周并检查了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只有哈希值,但我清楚地重新映射了它,所以它应该散列正确吗?
答案 0 :(得分:0)
如果您使用的是CakePHP 2.x,Auth将不再自动哈希密码
来自http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html
的文档AuthComponent不再自动散列每个密码 找。这被删除了,因为它做了许多常见的任务,如 验证困难。你永远不应该存储纯文本密码,和 在保存用户记录之前,您应始终对密码进行哈希处理。您 可以使用静态AuthComponent :: password()来哈希密码 拯救他们。这将使用为您配置的散列策略 应用