我有以下表格:
People
Users
Emails
用户的密码存储在Users
表中,我希望他们使用存储在Emails
表中的默认电子邮件地址进行身份验证。该电子邮件由表中的布尔列指示为默认值Emails
。
如何在此设置中使用 CakePHP 的身份验证组件?
我有以下表格:
People
Users
Emails
用户的密码存储在Users
表中,我希望他们使用存储在Emails
表中的默认电子邮件地址进行身份验证。该电子邮件由表中的布尔列指示为默认值Emails
。
如何在此设置中使用 CakePHP 的身份验证组件?
我认为您不应该将信息拆分为单独的表格。将所有内容放在您的用户表中,然后建立一对一的关系。
无论如何,如果你想这样做,你应该重写 UsersController 中的 login() 方法。
这里有一个例子:http ://bakery.cakephp.org/articles/SeanCallan/2007/04/17/simple-form-authentication-in-1-2-xx
这是您需要覆盖的方法:
http://api13.cakephp.org/class/auth-component#method-AuthComponentlogin
编辑:
使您的身份验证数据仅取决于用户。我的意思是,把电子邮件、用户名(如果你有的话)和密码放在那里。之后,例如,如果您有 People 表来记录其他信息(名字、地址、电话等),请与该表建立一对一的关系。如果您有 Customer 表,并且您的客户可以是用户,请建立一对一的关系。
前段时间我遇到了这个麻烦,并且像 Django 那样解决它很有用,并且使用这种一对一的解决方案。
这个答案应该足以证明您将无法为您的 Auth 组件使用多个模型。它只支持字符串,不支持数组。但是,如果您继续阅读,可能会有适合您的解决方法。
创建一个/app/Controller/Component/Auth/MyFormAuthenticate.php
文件,并设置Auth
为使用MyForm
而不是Form
用于身份验证。
在这个文件中包括authentication函数和_findUser函数。
然后,您需要覆盖该_findUser
功能以满足您的需要。
感谢 CakePHP freenode 频道上的 Ceeram 提供了这个解决方案。