【问题标题】:How to use separate table for passwords for Auth in CakePHP?如何在 CakePHP 中使用单独的表作为 Auth 的密码?
【发布时间】:2011-12-13 15:12:22
【问题描述】:

我有一个包含以下表格的数据库:

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 authentication login normalization


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2017-09-13
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多