Sie können es über verschiedene URLs für admin und Front Benutzer verwalten. Dies kann über die Routen und den APP Controller verwaltet werden. Was ich für eine meiner appplication bin mit wie unten:
In der routes.php Datei
Router::prefix('admin', function ($routes) {
// All routes here will be prefixed with `/admin`
// And have the prefix => admin route element added.
$routes->fallbacks('DashedRoute');
$routes->connect('/', array('controller' => 'Users', 'action' => 'login'));
/* Here you can define all the routes for the admin */
});
Router::scope('/', function ($routes) {
$routes->connect('/', array('controller' => 'Users', 'action' => 'login', 'home'));
/* Here you can define all the routes for the frontend */
});
Bitte für die Admin beachten Sie benötigen ein Verzeichnis, in alle schaffen/src/Controller,/src/Vorlage mit dem Namen "Admin" und innerhalb dieser Verzeichnisse können Sie die gleiche Struktur verwenden, die wir in unserem Code verwenden.
Jetzt kommt der Code, der
public $prefix = '';
public function initialize()
{
$this->prefix = (!empty($this->request->params['prefix'])?$this->request->params['prefix']:'');
$this->set('prefix',$this->prefix);
if(!empty($this->prefix) && $this->prefix==='admin')
{
$this->loadComponent('Auth', [
'loginAction' => [
'controller' => 'Users',
'action' => 'login',
'prefix'=>'admin'
],
'loginRedirect' => [
'controller' => 'Users',
'action' => 'index',
'prefix'=>'admin'
],
'logoutRedirect' => [
'controller' => 'Users',
'action' => 'login',
'prefix'=>'admin'
],
'authError' => 'Did you really think you are allowed to see that?',
'authenticate' => [
'Form' => [
'finder' => 'admin',
'fields' => ['username' => 'email', 'password' => 'password']
]
],
'storage' => ['className' => 'Session', 'key' => 'Auth.Admin']
]);
}
else
{
$this->loadComponent('Auth', [
'loginAction' => [
'controller' => 'Users',
'action' => 'login'
],
'loginRedirect' => [
'controller' => 'Users',
'action' => 'myaccount'
],
'logoutRedirect' => [
'controller' => 'Users',
'action' => 'login'
],
'authError' => 'Did you really think you are allowed to see that?',
'authenticate' => [
'Form' => [
'finder' => 'user',
'fields' => ['username' => 'email', 'password' => 'password']
]
],
'storage' => ['className' => 'Session', 'key' => 'Auth.User']
]);
}
}
Hier in /src/Controller/AppController.php geschrieben werden muss, kann man sehen, dass wir verschiedene Schlüssel für die Speicherung Auth.User und Auth verwenden. Admin
Für den Finder benötigen Sie den Code unten in Ihrem Benutzermodell Tisch im src \ Modell \ Table \ UsersTable.php
public function findAdmin(\Cake\ORM\Query $query, array $options)
{
$query
->select(array('Users.email', 'Users.password','Users.id','Users.role_id'))
->where(array('Users.role_id' => 1));
return $query;
}
public function findUser(\Cake\ORM\Query $query, array $options)
{
$query
->select(array('Users.email', 'Users.password','Users.id','Users.role_id'))
->where(array('Users.status' => 1,'Users.role_id' => 3));
return $query;
}
gelegen schreiben
Hinweis, hier halte ich role_id "1" für Admin und "3" für Front-Benutzer.
Auf diese Weise können Sie auch die Anmeldung für beide im selben Browser als Schlüssel für beide Benutzerarten ist unterschiedlich.
Hoffe das hilft Ihnen, die Struktur entsprechend einzurichten.
https://github.com/dereuromark/cakephp-tinyauth könnte Ihnen helfen, hier eine saubere Konfiguration und mit einfachen Rollen zu halten. – mark