我从CakePHP开始。我使用email
而不是username
构建了一个用户表记录...
问题是我不想拥有,而不是一个,但每个用户都有很多电子邮件,这样他们就可以使用他们的任何电子邮件登录同一个帐户,就像facebook一样。
我的问题,一旦CakePHP不允许我动态创建多个属性(参见my previous question),最好的方法是什么?
答案 0 :(得分:1)
我的建议是在数据库中设置两个表:
在您的USERS表中,您可以存储有关用户的任何内容:
然后设置USER_EMAILS表以使用外键引用USERS表:
使“电子邮件”成为一个独特的索引,以防止重复。
现在,只要您在USER_EMAILS表中查找电子邮件地址(例如登录时),您就会获得对您应该使用的USER的引用。
这有意义吗?
答案 1 :(得分:1)
您可能需要做@Petar回答的内容...以便为每个用户存储多封电子邮件。
要对用户进行身份验证,您需要创建一个custom authentication object,您必须创建一个authenticate()方法来生成查询,如果电子邮件密码正确,则返回true。
不要忘记在AppController中设置这个新的身份验证对象。它应该是这样的:
<强> AppController.php 强>
// Pass settings in $components array
public $components = array(
'Auth' => array(
'authenticate' => array(
'MultipleEmails'
)
)
);
<强>组件/认证/ MultipleEmailsAuthenticate.php 强>
class MultipleEmailsAuthenticate extends BaseAuthenticate {
public function authenticate(CakeRequest $request, CakeResponse $response) {
//make your query here and return true or false
}
如果您需要有关如何编写BaseAuthenticate类的示例,可以阅读源文件:BaseAuthenticate和FormAuthenticate。
希望这有帮助