Yii: Как пройти аутентификацию с использованием двух разных таблиц - PullRequest
1 голос
/ 19 декабря 2011

Кто-нибудь знает, как создавать отдельные формы входа и проходить проверку подлинности на двух разных таблицах?Я не могу пойти с одной таблицей и разными ролями ... клиент запросил создание отдельных таблиц ...

У меня есть система входа пользователя, основанная на системе входа в систему Yii Framework.Но теперь я должен сделать отдельный для пользователя-администратора (модуль администрирования).

Ответы [ 2 ]

2 голосов
/ 19 декабря 2011

Я решил эту проблему, создав две идентичные копии этого плагина из библиотеки Yii Framework:

http://www.yiiframework.com/extension/yii-user/

Затем я произвел рефакторинг, назвал его «Клиент» и изменил конфигурацию, чтобы она использовала другую таблицу и т. Д.

В опциях конфигурации для Yii я также включил эти опции, чтобы разделить сессии (config / main.php):

'components' => array(
    ...
    'user' => array(
        // enable cookie-based authentication
        'allowAutoLogin' => true,
        'loginUrl' => array('/user/login'),
        'class' => 'RWebUser', // added - possibly uses the Rights user manager
    ),
    'customer' => array(
        // enable cookie-based authentication
        'allowAutoLogin' => true,
        'loginUrl' => array('/customer/login'),
        'stateKeyPrefix' => 'customer',
    ),
    'customerUser' => array(
        'class' => 'CWebUser',
        'stateKeyPrefix' => 'customer',
        'loginUrl' => array('/customer/login'),
    ),
1 голос
/ 19 декабря 2011

Вы можете добавить свойство к вашему UserIdentity компоненту, называемое, например, роль.Затем измените метод UserIdentity authenticate() так, чтобы он выбирался из таблицы учетных записей, соответствующей роли.Теперь вам нужно убедиться, что UserIdentity->role установлено, прежде чем вызывать UserIdentity->authenticate().Если вы следуете шаблону yiic webapp, то это будет SiteController.Два очень простых способа (среди прочих):

  1. Имеют две разные страницы входа, одну для обычных пользователей и одну для администраторов, и у каждого есть свой собственный URL.Реализуйте его с двумя представлениями и двумя методами действий входа в систему в SiteController, каждый из которых настраивает UserIdentity->role перед вызовом UserIdentity->authenticate().Этот подход дублирует код, и вы сможете увидеть, как с ним разобраться, как только он заработает.
  2. Используйте одну страницу входа с элементом формы (возможно, флажком), который выбирает пользователь-администратор.Метод действия этой формы UserIdentity->role в соответствии с состоянием формы.
...