如何在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,那么创建一个新的身份验证处理程序就可以非常简单地将其存档。查看现有的表单处理程序也会对您有所帮助。您应该能够扩展它或将代码复制到新的处理程序中,并对其进行修改以满足您的需要

它有一个关于创建自定义处理程序的部分,但是为了了解整个过程的工作原理,我建议您阅读整个页面。

看一看