Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP身份验证-不同表中的用户名和密码_Php_Cakephp_Authentication_Cakephp 2.0 - Fatal编程技术网

CakePHP身份验证-不同表中的用户名和密码

CakePHP身份验证-不同表中的用户名和密码,php,cakephp,authentication,cakephp-2.0,Php,Cakephp,Authentication,Cakephp 2.0,我有以下表格: People Users Emails 用户的密码存储在Users表中,我希望他们使用Emails表中存储的默认电子邮件地址进行身份验证。电子邮件由电子邮件表中的布尔列指示为默认值 如何在此设置中使用CakePHP的身份验证组件?我认为您不应该将信息拆分到单独的表中。将所有内容都放在用户表中,然后建立一对一的关系 无论如何,如果要这样做,应该重写UsersController中的login()方法 这里有一个例子: 这是您需要覆盖的方法: 编辑: 使您的身份验证数据仅依赖于用

我有以下表格:

People
Users
Emails
用户的密码存储在
Users
表中,我希望他们使用
Emails
表中存储的默认电子邮件地址进行身份验证。电子邮件由
电子邮件
表中的布尔列指示为默认值


如何在此设置中使用CakePHP的身份验证组件?

我认为您不应该将信息拆分到单独的表中。将所有内容都放在用户表中,然后建立一对一的关系

无论如何,如果要这样做,应该重写UsersController中的login()方法

这里有一个例子:

这是您需要覆盖的方法:

编辑:

使您的身份验证数据仅依赖于用户。我的意思是,把电子邮件、用户名(如果你有)和密码放在那里。在这之后,如果您有一个People表来记录其他信息(名字、地址、电话等),则与该表建立一对一的关系。如果您有客户表,并且您的客户可以是用户,则建立一对一关系


我不久前遇到了这个问题,像Django一样解决它很有用,并且使用了这种一对一的解决方案。

应该足以证明您将无法为Auth组件使用多个模型。它只支持字符串,不支持数组。但是如果你继续阅读,可能会有一个解决办法。

创建一个
/app/Controller/Component/Auth/MyFormAuthenticate.php
文件,然后设置
Auth
使用
MyForm
而不是
Form
进行身份验证

在此文件中包括函数和函数

然后需要覆盖
\u findUser
功能以满足您的需要


感谢CakePHP freenode频道上的Ceeram提供此解决方案。

谢谢。你能解释一下“把所有东西都放在你的用户表中,然后建立一对一的关系”是什么意思吗。希望你明白,我的英语不是很好。我希望人们有很多电子邮件地址,也希望用户使用默认的电子邮件地址登录。这将如何改变您的解决方案?您的意思是一个人可以使用不同的电子邮件和密码登录?那绝对是个坏主意。每个用户应该只有一个凭据。不,用户只能使用默认电子邮件和密码登录。