如何在CakePHP中为Auth使用单独的密码表?
我有一个包含以下表格的数据库:如何在CakePHP中为Auth使用单独的密码表?,cakephp,authentication,login,normalization,Cakephp,Authentication,Login,Normalization,我有一个包含以下表格的数据库: CREATE TABLE `visitors` ( `name` varchar(64) not null, `id` int(10) unsigned not null auto_increment, # ...more fields here PRIMARY KEY (`id`), UNIQUE KEY (`name`) ); CREATE TABLE `credentials` ( `id` int(10) unsigned not nul
CREATE TABLE `visitors` (
`name` varchar(64) not null,
`id` int(10) unsigned not null auto_increment,
# ...more fields here
PRIMARY KEY (`id`),
UNIQUE KEY (`name`)
);
CREATE TABLE `credentials` (
`id` int(10) unsigned not null auto_increment,
`visitor_id` int(10) unsigned,
`type` enum('password','openid','google','facebook') not null,
`token` char(40) not null,
`modified` datetime,
`hint` varchar(64),
PRIMARY KEY (`id`),
KEY `visitor` (`visitor_id`),
KEY `token` (`token`)
);
经过一段时间的思考,我决定这是正确的,例如规范化,允许访问者拥有多个登录凭据,包括多个密码
但是,我想使用Cake的ACL特性,AuthComponent假设散列密码与用户访问者信息存储在同一个表中。解决这个问题的最佳方法是什么?我必须使用Auth->login,还是有更好的方法?如果您使用的是CakePHP 2.x,通过创建一个新的身份验证处理程序,这可以非常简单地存档。查看现有的表单处理程序也会对您有所帮助。您应该能够扩展它或将代码复制到新的处理程序中,并对其进行修改以满足您的需要
它有一个关于创建自定义处理程序的部分,但是为了了解整个过程的工作原理,我建议您阅读整个页面。如果您使用的是CakePHP 2.x,那么创建一个新的身份验证处理程序就可以非常简单地将其存档。查看现有的表单处理程序也会对您有所帮助。您应该能够扩展它或将代码复制到新的处理程序中,并对其进行修改以满足您的需要 它有一个关于创建自定义处理程序的部分,但是为了了解整个过程的工作原理,我建议您阅读整个页面。看一看