如何在CakePHP中使用单独的表作为Auth的密码?

时间:2011-10-23 16:50:52

标签: 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 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(),还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

如果您正在使用CakePHP 2.x,则可以通过创建新的身份验证处理程序来非常简单地归档。查看现有的Form处理程序也会对您有所帮助。您应该能够扩展它或将代码复制到新的处理程序中并根据您的需要进行修改。

Read the authentication chapter in the book.它有一个部分只是关于创建一个自定义处理程序,但要了解整个事情是如何工作的,我真的建议你阅读整个页面。