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

时间:2011-11-15 13:02:50

标签: php cakephp authentication cakephp-2.0

我有以下表格:

People
Users
Emails

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

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

3 个答案:

答案 0 :(得分:1)

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

无论如何,如果你想这样做,你应该覆盖UsersController中的login()方法。

这里有一个例子:http://bakery.cakephp.org/articles/SeanCallan/2007/04/17/simple-form-authentication-in-1-2-x-x

这是您需要覆盖的方法:

http://api13.cakephp.org/class/auth-component#method-AuthComponentlogin

修改

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

前段时间我遇到了这个问题,并且像Django那样解决它很有用,并且采用这种一对一的解决方案。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

创建/app/Controller/Component/Auth/MyFormAuthenticate.php文件,并设置Auth以使用MyForm代替Form进行身份验证。

在此文件中包含authenticate功能和_findUser功能。

然后,您需要覆盖_findUser功能以满足您的需求。

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