Как использовать две разные таблицы для аутентификации в cakePHP - PullRequest
0 голосов
/ 13 марта 2019

Я создаю админ и API, используя cakePHP. Как на стороне администратора, так и на стороне API есть система входа в систему. Существует две таблицы, одна из которых admins предназначена для входа администратора. Другой - users, который предназначен для входа на стороне API. Так что я хочу, чтобы, если пользователь прошел через администраторскую часть, то он должен проверить из таблицы admins, а если пользователи приходят из API, он должен проверить из таблицы users. Я разделил функциональность admin и api на две разные папки. Так что нормальная админская функциональность работает над папкой controller. Для функциональности api я создал еще одну папку внутри папки controller, названную Api. Итак, я использую два AppController.php. Один для admin, а другой для API.

Вот как я вызываю auth в Controller\AppController.php для администратора

$this->loadComponent('Auth',[
        'authenticate' => [
            'Form' => [
                'fields' => [
                    'username' => 'email',
                    'password' => 'password'
                ]
            ]
        ],
        'loginAction' => [
                'controller' => 'admins',
                'action'     => 'login'
            ]
    ]);

Вот как я вызываю компонент авторизации для входа в API в Controller\App\AppController.php

$this->loadComponent('Auth',[
        'authenticate' => [
            'Form' => [
                'fields' => [
                    'username' => 'email',
                    'password' => 'password'
                ]
            ]
        ],
        'loginAction' => [
                'controller' => 'user',
                'action'     => 'login'
            ]
    ]);

Вот логин для администратора

public function login()
{
    $user = $this->request->getSession()->read('Auth.User');
    if($user){
         $this->redirect(array('controller' => 'Venues'));
    }
    if ($this->request->is('post')) {
        $user = $this->Auth->identify();
        if($user){
            $this->Auth->setUser($user);
        }
        else{
            $this->Flash->error('Incorrect Login credential');
        }
    }
}

Вот функция входа в систему для API

public function login()
{
    $user = $this->request->getSession()->read('Auth.User');
    if($user){
         $this->redirect(array('controller' => 'Venues'));
    }
    if ($this->request->is('post')) {
        $user = $this->Auth->identify();
        if($user){
            $this->Auth->setUser($user);
        }
        else{
            $this->Flash->error('Incorrect Login credential');
        }
    }
}

Я звоню $this->Auth->identify(); из обеих функций входа в систему. Так что, возможно, это проблема. Есть возможность использовать разные таблицы для разных аутентификаций.

1 Ответ

0 голосов
/ 13 марта 2019

Если я понял, вы можете использовать метод finder в аутентификационных конфигурациях (https://book.cakephp.org/3.0/en/controllers/components/authentication.html#customizing-find-query)

Метод внутреннего поиска Вы можете использовать модель по умолчанию или загрузить другие модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...