CakePHP-无法使用Authcomponent::user在模型中访问登录用户的密码

CakePHP-无法使用Authcomponent::user在模型中访问登录用户的密码,cakephp,authentication,cakephp-2.0,change-password,Cakephp,Authentication,Cakephp 2.0,Change Password,几个月前我开始尝试CakePHP,现在我正在尝试为登录用户创建一个更改密码页面。我有一个由以下字段组成的表单:当前密码、新密码和新密码确认。对于当前密码,我想验证它是否与登录用户的密码匹配,这是用户模型中的一条规则。我知道我可以通过以下命令获得登录用户的信息:AuthComponent::user。但是,它为我提供了模型的每个字段,除了密码 我知道Auth->login负责为登录用户设置会话变量,但我不确定我在这里做错了什么,因为只有密码字段无法访问: public function login

几个月前我开始尝试CakePHP,现在我正在尝试为登录用户创建一个更改密码页面。我有一个由以下字段组成的表单:当前密码、新密码和新密码确认。对于当前密码,我想验证它是否与登录用户的密码匹配,这是用户模型中的一条规则。我知道我可以通过以下命令获得登录用户的信息:AuthComponent::user。但是,它为我提供了模型的每个字段,除了密码

我知道Auth->login负责为登录用户设置会话变量,但我不确定我在这里做错了什么,因为只有密码字段无法访问:

public function login() {

    if ($this->request->is('POST')) {
        if($this->Auth->login()) {
            $this->redirect($this->Auth->redirect());
        } else {
            $this->Session->setFlash('Your username/password combination was incorrect.');
        }
    }
}
以下是我的登录视图:

<h2>Login</h2>
<?php 
echo $this->Form->create('Promoter');
echo $this->Form->input('username');
echo $this->Form->input('password', array('type' => 'password'));
echo $this->Form->end('Login');?>
我可以求助于验证控制器中的密码,但那就是放弃:请告诉我是否需要提供更多代码来澄清问题


谢谢。

因为cake不会在会话中存储密码:

lib/Cake/Component/Auth/BaseAuthenticate.php第94行

unset($user[$fields['password']]);

你可能没有做错什么,这很可能是一个安全特性。没有理由在会话中保留密码

其次,即使是在会话中,它也会被加密,或者至少我希望是这样,如果不是,你应该立即更改它!。所以你还是不能做一个简单的比较

要比较旧密码,您应该查询您的发起人模型,并从那里获取散列密码,然后从更改密码表单中散列旧密码,最后比较散列结果

unset($user[$fields['password']]);