我有以下表格:
People
Users
Emails
用户的密码存储在Users
表中,我希望他们使用存储在Emails
表中的默认电子邮件地址进行身份验证。电子邮件由Emails
表中的布尔列表示为默认值。
如何在此设置中使用CakePHP的身份验证组件?
答案 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频道上提供此解决方案。