Я создаю админ и 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();
из обеих функций входа в систему. Так что, возможно, это проблема. Есть возможность использовать разные таблицы для разных аутентификаций.