Как использовать таблицу, отличную от «Users», для AuthComponent CakePHP? - PullRequest
8 голосов
/ 13 января 2009

CakePHP AuthComponent предполагает, что у вас есть таблица пользователей, которая содержит имя пользователя и пароль. Я хотел бы найти способ переопределить имя таблицы по умолчанию от пользователей к учетным записям.

Справочная информация:

Я спроектировал свою базу данных так, чтобы у нее была таблица Users и таблица Accounts.

Счета

  • ID

  • user_id

  • имя пользователя

  • пароль

  • служба аутентификации (например, мой сайт, Facebook, Google, OpenID и т. Д.)

Пользователи

  • просто содержит всю личную информацию пользователя (возраст, пол и т. Д.)

Причина этого в том, что

  1. каждый пользователь может иметь несколько учетных записей, с которых он может войти, поэтому они не заблокированы в одной
  2. Я могу подключить сторонние сервисы к учетной записи для большей удивительности

Теперь вернемся к проблеме ....

CakePHP имеет документацию по изменению имени поля по умолчанию, но я не могу найти ничего при изменении имени таблицы по умолчанию, но предполагаю, что это будет похоже по своей природе ...

Пример изменения имени поля по умолчанию:

function beforeFilter() {
    $this->Auth->fields = array(
            'username' => 'username',
            'password' => 'secretword'
        );
 }

Есть ли способ сделать это или я должен реструктурировать таблицы в соответствии с соглашением CakePHP и все еще выполнить то же самое?

Ответы [ 2 ]

20 голосов
/ 13 января 2009

В app_controller.php:

function beforeFilter() {
    $this->Auth->userModel = 'Account';
}
0 голосов
/ 27 апреля 2018

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

$this->Auth->authenticate = array(
    'Basic' => array('userModel' => 'Account'),
    'Form' => array(
       'fields' => array('username' => 'email'),
       'userModel' => 'Account'
       )
 );
...