Как использовать отдельную таблицу для паролей для Auth в CakePHP? - PullRequest
2 голосов
/ 23 октября 2011

У меня есть база данных со следующими таблицами:

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`)
  );

Подумав некоторое время об этом, я решил, что это "правильно", например, нормализация и предоставление посетителям нескольких учетных данных, включая несколько паролей.

Однако я хотел бы использовать функции ACL Cake, и AuthComponent предполагает, что хешированные пароли хранятся в той же таблице, что и информация о пользователе (посетителе). Какой лучший способ обойти это? Нужно ли использовать Auth-> login (), или есть лучший способ?

1 Ответ

0 голосов
/ 22 июня 2012

Если вы используете CakePHP 2.x, это можно заархивировать довольно просто, создав новый обработчик аутентификации.Просмотр существующего обработчика форм также поможет вам.Вы должны быть в состоянии расширить его или скопировать код в новый обработчик и изменить его в соответствии с вашими потребностями.

Прочитайте главу об аутентификации в книге. В ней есть раздел, посвященный созданиюпользовательский обработчик, но чтобы понять, как все это работает, я действительно предлагаю вам прочитать всю страницу.

...