如何使用Auth Component更改输入值?

时间:2012-08-08 22:20:22

标签: php cakephp

我使用的是CakePhp的最新版本。

我开发了一个包含电子邮件和密码的简单网页表单(我使用的是电子邮件而不是用户名)。

现在我有以下问题。

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

所以现在,在登录()之前,如何更改电子邮件字段的值?

谢谢

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您可以在致电FormAuthenticate之前在$this->request->data内创建自定义$this->Auth->login()课程或加密电子邮件。

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

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