如何使用认证组件更改输入值?

问题描述:

我正在使用CakePhp的最新版本。如何使用认证组件更改输入值?

我开发了一个带有电子邮件和密码的简单Web表单(我使用的是电子邮件而不是用户名)。

现在我有以下问题。

我在数据库中加密了电子邮件字段,所以,因为这个原因,我不能使用auth组件,因为它会检查计划电子邮件和散列密码。我需要加密的电子邮件和散列密码。

所以,现在,在登录()之前我怎么能改变电子邮件字段的值?

谢谢

+0

什么加密算法,您使用的电子邮件领域? – 2012-08-09 04:12:44

AuthComponent仍然适合您的情况。

如果包括组件指定的电子邮件地址也是“用户名”

public $components = array(
    'Auth' => array(
     'authenticate' => array(
      'Form' => array(
       'fields' => array('username' => 'email') 
      ) 
     ) 
    ) 
); 

然后调用登录方法之前刚刚进行加密的电子邮件地址。

$this->request->data['User']['email'] = someEncryption($this->request->data['User']['email']); 
$this->Auth->login(); 

希望这有助于

更多信息: http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#creating-custom-authentication-objects

您可以创建自定义FormAuthenticate类或调用$this->Auth->login()$this->request->data加密电子邮件。

如果使用第一个选项,请将未加密的电子邮件保存在tmp var中,并且如果登录失败,请恢复未加密的值,以便加密的值不会出现在表单中。

对于自定义身份验证类:http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#creating-custom-authentication-objects