0

我有以下表格:

People
Users
Emails

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

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

4

3 回答 3

1

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

无论如何,如果你想这样做,你应该重写 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 那样解决它很有用,并且使用这种一对一的解决方案。

于 2011-11-15T13:29:01.380 回答
0

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

于 2011-11-15T14:32:41.553 回答
0

创建一个/app/Controller/Component/Auth/MyFormAuthenticate.php文件,并设置Auth为使用MyForm而不是Form用于身份验证。

在这个文件中包括authentication函数和_findUser函数。

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

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

于 2011-11-17T12:14:29.397 回答