我正在使用最新版本的 CakePhp。
我开发了一个带有电子邮件和密码的简单网络表单(我使用电子邮件而不是用户名)。
现在我有以下问题。
我在数据库中加密了电子邮件字段,因此,我不能按原样使用身份验证组件,因为它会检查计划电子邮件和散列密码。我需要加密的电子邮件和散列密码。
那么现在,在 login() 之前,我如何更改电子邮件字段的值?
谢谢
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();
希望这可以帮助
您可以在调用之前创建自定义FormAuthenticate
类或加密电子邮件。$this->request->data
$this->Auth->login()
如果您使用第一个选项,请将未加密的电子邮件保存在 tmp var 中,如果登录失败,请恢复未加密的值,以便加密的值不会出现在表单中。