Администратор Cakephp и вход в систему одновременно не работают правильно

У меня есть два типа пользователей на моем сайте. 1.Пользователь (внешний интерфейс) 2.Администратор (внутренняя часть)

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

Ниже приведен мой код авторизации отдельно для администратора и пользователя.

Это файл AppController.php в app/Controller.

public function beforeFilter() {
    if($this->Auth->user()){
    $this->set('logged_in', true);
    }else{
    $this->set('logged_in', false);
    }
    //Configure AuthComponent
    $this->Auth->userScope = array('User.is_active' => '1');
    $this->Auth->loginAction = array('controller' => 'users', 'action' => 'signin','plugin' => 'umgmt');
    $this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'signin','plugin' => 'umgmt');
    $this->Auth->loginRedirect = array('controller' => 'users', 'action' => 'index','plugin' => false);

    }

Это мой код контроллера плагина администратора

public $components = array(
    'Auth' => array(
            'authenticate' => array(
                'Form' => array(
                    'userModel' => 'Admin',
                    'fields' => array(
                        'username' => 'username',
                        'password' => 'password'
                    ),
                     'scope'=>array('Admin.is_active' => 1)
                )
            )
        )
    );


public function beforeFilter() {

    $this->Auth->loginAction = array('controller' => 'admins', 'action' => 'index');
    $this->Auth->logoutRedirect = array('controller' => 'admins', 'action' => 'index');
    $this->Auth->loginRedirect = array('controller' => 'admins', 'action' => 'dashboard');

}

Я использую cakephp 2.4.1.

Пожалуйста помогите


person cakedev    schedule 15.04.2014    source источник
comment
где действие входа?   -  person Moyed Ansari    schedule 15.04.2014
comment
Мойед Ансари, у меня есть код обновления выше для входа в систему с правами администратора   -  person cakedev    schedule 15.04.2014


Ответы (1)


Хорошо. Во-первых, небольшое замечание: вам не нужно устанавливать переменные logged_in и out, поскольку AuthComponent предоставляет эту функциональность с помощью метода AuthComponent::loggedIn().

Во-вторых, вы не указали свой тип аутентификации. Согласно книге, обычно разумно использовать Controller, чтобы вы могли управлять своей аутентификацией для каждого действия.

Поэтому вам нужно обновить конфигурацию вашего компонента или ваш beforeFilter(), чтобы включить тип авторизации.

$this->Auth->authorize = array('Controller');

Затем вы можете использовать метод isAuthorized() в своем AppController для проверки ролей ваших пользователей на основе используемого префикса маршрутизации.

Вся эта реализация описана в книге Cake в главе об аутентификации. .

person David Yell    schedule 15.04.2014
comment
DavidYell, возможно ли использовать Cake AuthComponent для входа двух типов пользователей (admin, user) в один и тот же браузер одновременно? на самом деле проблема в том, что. Когда я вхожу в систему как обычный пользователь во внешнем интерфейсе, используя Auth, я автоматически вхожу в систему в качестве администратора в бэкэнде и показываю панель управления mw. Я надеюсь, что вы поможете мне решить мою проблему. Спасибо за ответ. Я пробовал $this->Auth->authorize = array('Controller'); перед фильтром, но это не останавливает одновременного входа пользователя. - person cakedev; 15.04.2014