Аутентификация CakePHP - имя пользователя и пароль в разных таблицах - PullRequest
0 голосов
/ 15 ноября 2011

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

People
Users
Emails

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

Как использовать компонент проверки подлинности CakePHP в этой настройке?

Ответы [ 3 ]

1 голос
/ 15 ноября 2011

Я думаю, вы не должны разбивать информацию на отдельные таблицы.Поместите все в свою таблицу Users, а затем установите взаимно-однозначные отношения.

В любом случае, если вы хотите сделать это таким образом, вы должны переопределить метод login () в UsersController.

Здесь у вас есть пример: http://bakery.cakephp.org/articles/SeanCallan/2007/04/17/simple-form-authentication-in-1-2-x-x

Этот метод необходимо переопределить:

http://api13.cakephp.org/class/auth-component#method-AuthComponentlogin

РЕДАКТИРОВАТЬ:

Сделать ваши данные авторизации зависит только от пользователей.Я имею в виду, поместите электронную почту, имя пользователя (если оно у вас есть) и пароль.После этого, если у вас есть, например, таблица «Люди» для записи другой информации (имя, адрес, телефон и т. Д.), Создайте отношение «один к одному» с этой таблицей.Если у вас есть таблица клиентов, а ваш клиент может быть пользователем, установите отношения один-к-одному.

Я столкнулся с этой проблемой некоторое время назад и был полезен для ее решения, как и Джанго, ис этим решением один на один.

0 голосов
/ 17 ноября 2011

Создайте файл /app/Controller/Component/Auth/MyFormAuthenticate.php и настройте Auth для использования MyForm вместо Form для аутентификации.

В этом файле есть функция authenticate и функция _findUser .

Затем вам нужно переопределить функцию _findUser в соответствии с вашими потребностями.

Спасибо Ceeram за канал Freenode CakePHP за это решение.

0 голосов
/ 15 ноября 2011

Этот ответ должен быть достаточным свидетельством того, что вы не сможете использовать несколько моделей для вашего компонента Auth. Он поддерживает только строку, а не массив. Но если вы продолжаете читать, возможно, для вас найдется обходной путь.

...