[英]CakePHP Authentication - Username and Password in different tables
我有以下表格:
People
Users
Emails
用户的密码存储在“ Users
表中,我希望他们使用存储在“ Emails
表中的默认电子邮件地址进行身份验证。 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表来记录其他信息(名字,地址,电话等),请与该表建立一对一的关系。 如果您有客户表,并且客户可以是用户,则建立一对一关系。
不久前,我遇到了这种麻烦,就像Django一样,对解决它很有用,并且是这种一对一的解决方案。
此答案应该有足够的证据表明您将无法对Auth组件使用多个模型。 它仅支持字符串,不支持数组。 但是,如果您继续阅读,可能会有适合您的解决方法。
创建一个/app/Controller/Component/Auth/MyFormAuthenticate.php
文件,并将Auth
设置为使用MyForm
而不是Form
进行身份验证。
在此文件中包括authenticate函数和_findUser函数。
然后,您需要覆盖_findUser
函数以适合您的需求。
感谢CakePHP freenode频道上的Ceeram提供此解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.