CakePHP在让用户验证电子邮件时更改河豚密码?

CakePHP在让用户验证电子邮件时更改河豚密码?,cakephp,passwords,blowfish,Cakephp,Passwords,Blowfish,我遵循了CakePHP关于使用Blowfish加密对密码进行哈希的书,这是有效的,没有任何问题 现在,我已经遵循了此指南,以了解如何验证我的用户电子邮件帐户。这是可行的,我创建的带有指向我的站点路径的链接的电子邮件,然后在URL字符串中接收电子邮件,它会将令牌保存在我的数据库中,如果正确,它会将我的活动和验证数据库字段设置为true 但是,它似乎也会更改我保存的Blowfish密码,每次我测试链接时,CakePHP似乎会在users passwords字段中写入一个新的Blowfish哈希 我知

我遵循了CakePHP关于使用Blowfish加密对密码进行哈希的书,这是有效的,没有任何问题

现在,我已经遵循了此指南,以了解如何验证我的用户电子邮件帐户。这是可行的,我创建的带有指向我的站点路径的链接的电子邮件,然后在URL字符串中接收电子邮件,它会将令牌保存在我的数据库中,如果正确,它会将我的
活动
验证
数据库字段设置为true

但是,它似乎也会更改我保存的Blowfish密码,每次我测试链接时,CakePHP似乎会在users passwords字段中写入一个新的Blowfish哈希

我知道用于河豚的salt是在运行时生成的,因此即使用户输入的密码相同,它也会保存不同的哈希密码。这不是我的问题,当我验证我的用户电子邮件时,它重新保存了密码,甚至知道我没有告诉它这样做

所以这是我的用户模型,用以过滤密码

  public function beforeSave($options = array()) {
      if (isset($this->data[$this->alias]['password'])) {
        $this->data[$this->alias]['password'] = Security::hash($this->data[$this->alias]['password'],'blowfish');
      }
      return true;
  } //End of BeforeSave
我已经建立了一个简单的邮件到PHP代码,这是一个发送电子邮件的临时快速方法,因为出于某种原因CakePHP电子邮件对我不起作用,但我认为这取决于我的LAMP stack config/gmail设置,这是一行将链接发送给我的用户的代码

  $message .= '<a href="verifymyuser/t:'.$hash.'/n:'.$this->data['User']['email'].'">CLICK HERE</a>';
我正在设置一个“主动;”“已验证”标记输入数据库,如果以后我想停用该用户,我可以。我还将“令牌”擦除为空,以便如果用户更改其电子邮件地址,那么我可以设置一个新令牌,我只想确保它将是一个新令牌

我确信它对我的模型已经完成了,但我看不出它有什么问题,它得到了一个if检查,用于设置密码字段,这不是吗?除非我不了解数据移动的方式


谢谢。

事实上,通过这些信息很难找到正在发生的事情。 试试这个,希望它能暂时解决你的问题

$this->User->save($GetUserToVerify, array(
    'fieldList' = array('token','active','verified')));

是的,修复了它,谢谢-我刚刚看到这个,我在
$GetUserToVerify
上运行了一个调试,发现它包含了用户表中的所有信息,我感到震惊。所以我认为密码字段已经设置好了,所以它重新散列了一个散列密码。-注意:语法错误,我必须删除
$GetUserToVerify
之后的第二个
$this->User->save($GetUserToVerify, array(
    'fieldList' = array('token','active','verified')));