CakePHP - Dienstleistungen

Dieses Kapitel behandelt die Informationen zum in CakePHP verfügbaren Authentifizierungsprozess.

Authentifizierung

Bei der Authentifizierung wird der richtige Benutzer identifiziert. CakePHP unterstützt drei Arten der Authentifizierung.

  • FormAuthenticate- Sie können Benutzer anhand von POST-Formulardaten authentifizieren. Normalerweise ist dies ein Anmeldeformular, in das Benutzer Informationen eingeben. Dies ist die Standardauthentifizierungsmethode.

  • BasicAuthenticate - Sie können Benutzer mithilfe der HTTP-Standardauthentifizierung authentifizieren

  • DigestAuthenticate - Sie können Benutzer mithilfe der Digest-HTTP-Authentifizierung authentifizieren.

Beispiel für FormAuthentication

Nehmen Sie Änderungen in der Datei config / route.php vor, wie im folgenden Code gezeigt.

config/routes.php

<?php
use Cake\Core\Plugin;
use Cake\Routing\RouteBuilder;
use Cake\Routing\Router;
Router::defaultRouteClass('DashedRoute');
Router::scope('/', function (RouteBuilder $routes) {
   $routes->connect('/auth',['controller'=>'Authexs','action'=>'index']);
   $routes->connect('/login',['controller'=>'Authexs','action'=>'login']);
   $routes->connect('/logout',['controller'=>'Authexs','action'=>'logout']);
   $routes->fallbacks('DashedRoute');
});
Plugin::routes();

Ändern Sie den Code der Datei AppController.php wie im folgenden Programm gezeigt.

src/Controller/AppController.php

<?php
namespace App\Controller;
use Cake\Controller\Controller;
use Cake\Event\Event;
use Cake\Controller\Component\AuthComponent;
class AppController extends Controller {
   public function initialize() {
      parent::initialize();
      $this->loadComponent('RequestHandler');
      $this->loadComponent('Flash');
         $this->loadComponent('Auth', [
            'authenticate' => [
               'Form' => [
                  'fields' => [
               'username' => 'username',
               'password' => 'password'
            ]
         ]
      ],
      'loginAction' => [
         'controller' => 'Authexs',
         'action' => 'login'
      ],
      'loginRedirect' => [
         'controller' => 'Authexs',
         'action' => 'index'
      ],
      'logoutRedirect' => [
         'controller' => 'Authexs',
         'action' => 'login'
      ]
   ]);
}
public function beforeFilter(Event $event) {
      $this->Auth->allow(['index','view']);
      $this->set('loggedIn', $this->Auth->user());
   }
}

Erstellen AuthexsController.php Datei bei src/Controller/AuthexsController.php. Kopieren Sie den folgenden Code in die Controller-Datei.

src/Controller/AuthexsController.php

<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\ORM\TableRegistry;
use Cake\Datasource\ConnectionManager;
use Cake\Event\Event;
use Cake\Auth\DefaultPasswordHasher;
class AuthexsController extends AppController {
   var $components = array('Auth');
   public function index(){
   }
   public function login(){
      if($this->request->is('post')) {
         $user = $this->Auth->identify();
         if($user){
            $this->Auth->setUser($user);
            return $this->redirect($this->Auth->redirectUrl());
         } else
         $this->Flash->error('Your username or password is incorrect.');
      }
   }
   public function logout(){
      return $this->redirect($this->Auth->logout());
   } 
}
?>

Erstellen Sie ein Verzeichnis Authexs beim src/Template und unter diesem Verzeichnis erstellen Sie eine View Datei aufgerufen login.php. Kopieren Sie den folgenden Code in diese Datei.

src/Template/Authexs/login.php

<?php
   echo $this->Form->create();
   echo $this->Form->control('username');
   echo $this->Form->control('password');
   echo $this->Form->button('Submit');
   echo $this->Form->end();
?>

Ein anderes erstellen View Datei aufgerufen logout.php. Kopieren Sie den folgenden Code in diese Datei.

src/Template/Authexs/logout.php

You are successfully logged out.

Ein anderes erstellen View Datei aufgerufen index.php. Kopieren Sie den folgenden Code in diese Datei.

src/Template/Authexs/index.php

You are successfully logged in. 
<?php 
   echo $this->Html->link('logout',[
      "controller" => "Authexs","action" => "logout"
   ]); 
?>

Führen Sie das obige Beispiel aus, indem Sie die folgende URL aufrufen.

http: // localhost / cakephp4 / auth

Ausgabe

Nachdem die Authentifizierung implementiert wurde und Sie versuchen, die oben genannte URL aufzurufen, werden Sie wie unten gezeigt zur Anmeldeseite weitergeleitet.

Nachdem Sie die richtigen Anmeldeinformationen eingegeben haben, werden Sie angemeldet und wie unten gezeigt auf den Bildschirm umgeleitet.

Nach dem Klicken auf die logout Link, werden Sie wieder zum Anmeldebildschirm weitergeleitet.