Php 如何使用Auth组件更改输入值?

Php 如何使用Auth组件更改输入值?,php,cakephp,Php,Cakephp,我使用的是CakePhp的最新版本 我开发了一个带有电子邮件和密码的简单web表单(我使用电子邮件而不是用户名) 现在我有以下问题 我在数据库中加密了电子邮件字段,因此,出于这个原因,我不能按原样使用auth组件,因为它将检查计划电子邮件和哈希密码。我需要加密的电子邮件和哈希密码 现在,在login()之前,我如何更改email字段的值 谢谢在调用$this->Auth->login()之前,您可以在$this->request->data中创建自定义的身份验证类或加密电子邮件 如果使用第一个选

我使用的是CakePhp的最新版本

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

现在我有以下问题

我在数据库中加密了电子邮件字段,因此,出于这个原因,我不能按原样使用auth组件,因为它将检查计划电子邮件和哈希密码。我需要加密的电子邮件和哈希密码

现在,在login()之前,我如何更改email字段的值


谢谢

在调用
$this->Auth->login()之前,您可以在
$this->request->data
中创建自定义的
身份验证类或加密电子邮件

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


对于自定义身份验证类:

身份验证组件仍然适合您的情况

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

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();
希望这有帮助

更多信息:

您对电子邮件字段使用的加密算法是什么?