使用用户名登录或使用Cakephp 4发送电子邮件

使用用户名登录或使用Cakephp 4发送电子邮件,cakephp,cakephp-4.x,Cakephp,Cakephp 4.x,这是一个后续问题:是否可以首先检查是否通过用户名找到用户,如果不是,则尝试通过电子邮件找到用户名 这个问题的答案中列出的解决方案在cakephp-4中不再有效,因为它们依赖于如下操作请求对象:$this->request->data['email']=$this->request->data['username']。这在cakephp-4中不再可能 有没有一种方法可以在不必操作请求对象的情况下对用户进行身份验证?我唯一能想到的是使用javascript将用户名输入的内容复制到隐藏的电子邮件输入中

这是一个后续问题:是否可以首先检查是否通过用户名找到用户,如果不是,则尝试通过电子邮件找到用户名

这个问题的答案中列出的解决方案在cakephp-4中不再有效,因为它们依赖于如下操作请求对象:
$this->request->data['email']=$this->request->data['username']。这在cakephp-4中不再可能


有没有一种方法可以在不必操作请求对象的情况下对用户进行身份验证?我唯一能想到的是使用javascript将用户名输入的内容复制到隐藏的电子邮件输入中,以便在请求中设置电子邮件字段,而不必在服务器端操纵请求。然而,这似乎是一个非常粗糙、脆弱的解决方案。

在使用AuthComponent时,我使用Tools.MultiColumn(),它仍然可以正常工作

见例

对于Auth插件,更好的选择是为配置使用一个数组,如插件文档中所述:

字段:用于查找的字段。默认值为['username'=>'username','password'=>'password']。您还可以将用户名设置为数组。例如,使用['username'=>['username','email'],'password'=>'password']将允许您匹配用户名或电子邮件列的值


在使用AuthComponent时,我使用Tools.MultiColumn(),它仍然可以正常工作

见例

对于Auth插件,更好的选择是为配置使用一个数组,如插件文档中所述:

字段:用于查找的字段。默认值为['username'=>'username','password'=>'password']。您还可以将用户名设置为数组。例如,使用['username'=>['username','email'],'password'=>'password']将允许您匹配用户名或电子邮件列的值


阅读:@Salines我正在使用的应用程序仍然使用AuthComponent(我知道它已弃用)。阅读:@Salines我正在使用的应用程序仍然使用AuthComponent(我知道它已弃用)。