CakePHP - Services

Ce chapitre traite des informations sur le processus d'authentification disponible dans CakePHP.

Authentification

L'authentification est le processus d'identification du bon utilisateur. CakePHP prend en charge trois types d'authentification.

  • FormAuthenticate- Il vous permet d'authentifier les utilisateurs en fonction des données POST du formulaire. Il s'agit généralement d'un formulaire de connexion dans lequel les utilisateurs saisissent des informations. Il s'agit de la méthode d'authentification par défaut.

  • BasicAuthenticate - Il vous permet d'authentifier les utilisateurs à l'aide de l'authentification HTTP de base

  • DigestAuthenticate - Il vous permet d'authentifier les utilisateurs à l'aide de l'authentification HTTP Digest.

Exemple pour FormAuthentication

Apportez des modifications dans le fichier config / routes.php comme indiqué dans le code suivant.

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();

Modifiez le code du fichier AppController.php comme indiqué dans le programme suivant.

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());
   }
}

Créer AuthexsController.php déposer à src/Controller/AuthexsController.php. Copiez le code suivant dans le fichier du contrôleur.

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());
   } 
}
?>

Créer un annuaire Authexs à src/Template et sous ce répertoire, créez un View fichier appelé login.php. Copiez le code suivant dans ce fichier.

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();
?>

Créer un autre View fichier appelé logout.php. Copiez le code suivant dans ce fichier.

src/Template/Authexs/logout.php

You are successfully logged out.

Créer un autre View fichier appelé index.php. Copiez le code suivant dans ce fichier.

src/Template/Authexs/index.php

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

Exécutez l'exemple ci-dessus en visitant l'URL suivante.

http: // localhost / cakephp4 / auth

Production

Comme l'authentification a été mise en œuvre, et une fois que vous essayez de visiter l'URL ci-dessus, vous serez redirigé vers la page de connexion comme indiqué ci-dessous.

Après avoir fourni les informations d'identification correctes, vous serez connecté et redirigé vers l'écran comme indiqué ci-dessous.

Après avoir cliqué sur le logout lien, vous serez redirigé vers l'écran de connexion.