这是Login with username or email with Cakephp 3的后续问题:是否可以首先检查用户是否被用户名找到,如果没有,可以通过电子邮件查找用户名吗?
这个问题的答案中概述的解决方案在cakephp-4中不再有效,因为它们依赖于像这样操作请求对象:$this->request->data['email'] = $this->request->data['username'];。这在cakephp-4中已经不可能了。
是否有一种无需操作请求对象而对用户进行身份验证的方法?我唯一能想到的就是有一些javascript将用户名输入的内容复制到隐藏的电子邮件输入中,这样在请求中就可以设置电子邮件字段,而不必在服务器端操纵请求。然而,这似乎是一个非常棘手、脆弱的解决方案。
发布于 2020-12-07 16:31:34
当使用AuthComponent时,我使用Tools.MultiColumn ( https://github.com/dereuromark/cakephp-tools/blob/master/docs/Auth/MultiColumn.md ),它仍然工作正常。
参见例如https://github.com/dereuromark/cakephp-sandbox/blob/master/src/Controller/AppController.php#L57
对于Auth插件,更好的选择是为配置使用数组,如插件文档中所述:
字段:查找的字段。默认为‘用户名’=>‘用户名’,‘密码’‘=>’密码‘。还可以将用户名设置为数组。例如,使用[‘用户名’=>‘用户名’、‘电子邮件’、‘密码’‘=>’密码‘]将允许您匹配用户名或电子邮件列的值。
https://stackoverflow.com/questions/65183685
复制相似问题