0

我从 CakePHP 开始。我已经建立了一个用户表记录,email而不是username......问题是我不想为每个用户拥有,不是一个,而是很多电子邮件,这样他们就可以使用他们的任何电子邮件登录到同一个帐户,几乎就像 facebook做。

我的问题是,一旦 CakePHP 不允许我动态创建多个属性(请参阅我之前的问题),那么最好的方法是什么?

4

2 回答 2

1

您可能需要执行@Petar 回答的操作...以便为每个用户存储多封电子邮件。

要对用户进行身份验证,您可能需要创建一个自定义身份验证对象,您必须在其中创建一个 authenticate() 方法,该方法进行查询并在电子邮件密码正确时返回 true。

不要忘记在您的 AppController 中设置这个新的身份验证对象。它应该是这样的:

应用控制器.php

// Pass settings in $components array
public $components = array(
    'Auth' => array(
        'authenticate' => array(
            'MultipleEmails'
        )
    )
);

组件/Auth/MultipleEmailsAuthenticate.php

class MultipleEmailsAuthenticate extends BaseAuthenticate {
    public function authenticate(CakeRequest $request, CakeResponse $response) {
        //make your query here and return true or false     
    }

如果您想要一些关于如何编写 BaseAuthenticate 类的示例,您可以阅读源文件:BaseAuthenticateFormAuthenticate

希望这可以帮助

于 2012-10-11T12:29:07.203 回答
1

我的建议是在您的数据库中设置两个表:

  • 用户
  • USER_EMAILS

在您的 USERS 表中,您可以存储您想要的有关用户的任何信息:

  • ID
  • 用户名
  • 名称
  • 名字
  • 电话
  • ETC...

然后设置 USER_EMAILS 表以使用外键引用 USERS 表:

  • user_id(外键)
  • 电子邮件

使“电子邮件”成为唯一索引以防止重复。

现在,每当您在 USER_EMAILS 表中查找电子邮件地址时(例如登录时),您将获得对您应该使用的 USER 的引用。

那有意义吗?

于 2012-10-11T12:06:10.293 回答