Ich arbeite in CakePHP 3.2 und schreibe ein Admin-Panel, wo nur Admin anmelden können.CakePHP Fehler: Klasse App Controller AuthComponent nicht gefunden
Es gibt eine separate Tabelle admins
zum Speichern von Administratoranmeldeinformationen. Es gibt auch users
Tabelle, die für Benutzer verwendet wird, um sich aus der Hauptanwendung zu registrieren/einzuloggen.
Ich muss admins
Tabelle verwenden, um sich im Admin-Panel anzumelden.
Was ich getan habe ist.
<?php
namespace App\Controller;
use Cake\Controller\Controller;
use Cake\Event\Event;
class AppController extends Controller
{
public function initialize()
{
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
$this->loadComponent('Auth', [
'loginAction' => [
'controller' => 'Admins',
'action' => 'login',
'plugin' => 'Admins'
],
'loginRedirect' => [
'controller' => 'ServiceRequests',
'action' => 'index'
],
'logoutRedirect' => [
'controller' => 'Admins',
'action' => 'login'
],
'authenticate' => [
'Form' => [
'userModel' => 'Admin',
'fields' => [
'username' => 'email',
'password' => 'password'
]
]
]
]);
}
public function beforeRender(Event $event)
{
if (!array_key_exists('_serialize', $this->viewVars) &&
in_array($this->response->type(), ['application/json', 'application/xml'])
) {
$this->set('_serialize', true);
}
}
}
AdminsController.php
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\Event\Event;
use App\Controller\AuthComponent;
/**
* Admins Controller
*
* @property \App\Model\Table\AdminsTable $Admins
*/
class AdminsController extends AppController
{
public function beforeFilter(Event $event)
{
parent::beforeFilter($event);
$this->Auth->allow('add');
// Pass settings in using 'all'
$this->Auth->config('authenticate', [
AuthComponent::ALL => ['userModel' => 'Members'],
'Basic',
'Form'
]);
}
public function login()
{
if ($this->request->is('post')) {
$user = $this->Auth->identify();
if ($user) {
$this->Auth->setUser($user);
return $this->redirect($this->Auth->redirectUrl());
}
$this->Flash->error(__('Invalid username or password, try again'));
}
}
public function logout()
{
return $this->redirect($this->Auth->logout());
}
}
Aber das funktioniert nicht. und gibt Error: Class App\Controller\AuthComponent' not found
Auch ich möchte den Zugriff auf alle Controller und Aktionen ohne Anmeldung beschränken. Das ist, warum gibt es keine $this->Auth->allow()
in AppsController.php
... und 'Regler \ Component' :) – ndm
Meh ... :) Danke – burzum