当前位置: 首页 > 知识库问答 >
问题:

在Authentication CakePHP 3中使用电子邮件字段而不是用户名字段

隗新霁
2023-03-14

我试图为一个web应用程序实现登录功能。我发现如果我使用“用户名”以外的字段,CakePHP不允许身份验证。您能解释一下我如何使用电子邮件字段而不是用户名字段进行身份验证吗。

我在下面分享用户表和验证码::

用户表

CREATE TABLE `users` (
  `id` binary(36) NOT NULL DEFAULT 'NOT NULL\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
  `password` varchar(225) NOT NULL,
  `firstname` varchar(50) NOT NULL,
  `lastname` varchar(50) NOT NULL,
  `email` varchar(45) NOT NULL,
  `phone` varchar(15) NOT NULL DEFAULT '0',
  `dob` date NOT NULL,
  `profile_for` varchar(50) DEFAULT NULL,
  `profile_pic` varchar(255) DEFAULT NULL,
  `cover_photo` varchar(100) DEFAULT NULL,
  `package_id` binary(36) DEFAULT NULL,
  `status` enum('act','dct','hid') NOT NULL DEFAULT 'act',
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `mobile` (`phone`),
  UNIQUE KEY `email_UNIQUE` (`email`),
  KEY `package_id_idx` (`package_id`),
  CONSTRAINT `package_id` FOREIGN KEY (`package_id`) REFERENCES `packages` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

认证码


      $this->loadComponent('Auth', [
            'loginAction'=> [
                'controller' => 'Users',
                'action' => 'login'
            ],
            'loginRedirect'=>[
                'controller' => 'Users',
                'action' => 'dashboard'
            ],
            'logoutRedirect'=>[
                'controller' => 'Users',
                'action' => 'login'
            ],
            'authError' => 'Did you really think you are allowed to see that?',
            'authenticate' => [
                'Form' => ['email' => 'email', 'password' => 'password']
            ],
            'storage' => 'Session',
            'authorize' => array('Controller')
        ]);

共有1个答案

松智勇
2023-03-14

更改:

'authenticate' => [
    'Form' => ['email' => 'email', 'password' => 'password']
],

致:

'authenticate' => [
    'Form' => ['username' => 'email', 'password' => 'password']
],
 类似资料:
  • 使用Firebase,我可以使用电子邮件地址注册和登录用户。但是,如果我希望应用程序基于用户名怎么办?例如,您使用“Bobzilla”而不是“Bob@mail.com”登录? Firebase是否可以这样做?

  • 我有一个使用Spring Security的应用程序。在成功注册后,我试图获取用户的姓名,但当我进入登录页面时,我收到的是电子邮件而不是姓名。成功登录后,我提供了一个屏幕截图。 在上图中,我想要名字,而不是电子邮件地址。 我在给你上课,我认为这最重要。 控制器类 安全配置类 LOGIN.HTML 应用程序用户类

  • 问题内容: 我的django.contrib.auth用户模型有一个问题,其中电子邮件max_length为75。 我从facebook api接收到超过75个字符的电子邮件地址,我需要(真的很想)将它们存储在用户中,以便来自facebook connect和其他用户的连续性。 我可以通过手动编辑mySql数据库中的字段来解决“ ”问题,但是 有更好的方法来解决此问题吗? 最好是一个 不涉及我 每

  • 当发送带有消息ID头的任何电子邮件时,对它的任何回复都包括对该ID的命名的回复,以及可以命名父消息ID列表的引用,并且电子邮件客户端在线程视图中查看电子邮件列表时使用此信息来构造线程。 我的问题是:所有的电子邮件客户端(Outlook,Gmail,Exchange等)在发送回复到任何现有的电子邮件时,会在电子邮件头中追加回复字段吗? 我参考了RFC 2822,但它在回复中说字段是可选的。 In-R

  • 我想将Firebase用于我的网络应用程序,该应用程序适用于养老院中的痴呆症患者。他们没有电子邮件或社交网络帐户,因此需要简单的用户名/密码注册/登录。 最简单的方法是什么?从我在文档中看到的情况来看,我必须使用自定义的身份验证流,但我没有现有的身份验证服务器。 如果我确实需要这样做,那么提供代币的最简单方法是什么?Azure中有函数,AWS有Lambda,但我看这里没有Firebase

  • 问题内容: 我正在尝试在这里做两件事: 1. 将电子邮件字段添加到(默认)UserProfile表。奇迹般有效。用户可以注册用户名和电子邮件。 2. 更改登录名以使用电子邮件代替用户名,这也可以像超级按钮一样工作。 这是问题所在。以上仅当我将它们分开时才有效,一旦我同时使用它们 ,注册过程就会失败, 并显示以下 错误消息: 我或多或少遵循 此处找到 的 指南 , 在评论部分中,我看到其他人也有相同