Laravel - Autorisation

Dans le chapitre précédent, nous avons étudié le processus d'authentification dans Laravel. Ce chapitre vous explique le processus d'autorisation dans Laravel.

Différence entre authentification et autorisation

Avant d'aller plus loin dans l'apprentissage du processus d'autorisation dans Laravel, comprenons la différence entre authentification et autorisation.

Dans authentication, le système ou l'application Web identifie ses utilisateurs grâce aux informations d'identification qu'ils fournissent. S'il constate que les informations d'identification sont valides, elles sont authentifiées, sinon elles ne le sont pas.

Dans authorization, le système ou l'application Web vérifie si les utilisateurs authentifiés peuvent accéder aux ressources auxquelles ils tentent d'accéder ou pour lesquels ils font une demande. En d'autres termes, il vérifie leurs droits et autorisations sur les ressources demandées. S'il constate qu'ils peuvent accéder aux ressources, cela signifie qu'ils sont autorisés.

Donc, authentication implique la vérification de la validité des informations d'identification de l'utilisateur, et authorization implique la vérification des droits et autorisations sur les ressources dont dispose un utilisateur authentifié.

Mécanisme d'autorisation à Laravel

Laravel fournit un mécanisme simple d'autorisation qui contient deux méthodes principales, à savoir Gates et Policies.

Rédaction de portes et de politiques

Les portes sont utilisées pour déterminer si un utilisateur est autorisé à effectuer une action spécifiée. Ils sont généralement définis dansApp/Providers/AuthServiceProvider.phpen utilisant la façade de la porte. Les portes sont également des fonctions qui sont déclarées pour exécuter le mécanisme d'autorisation.

Les politiques sont déclarées dans un tableau et sont utilisées dans des classes et des méthodes qui utilisent un mécanisme d'autorisation.

Les lignes de code suivantes vous expliquent comment utiliser les portes et les stratégies pour autoriser un utilisateur dans une application Web Laravel. Notez que dans cet exemple, leboot La fonction est utilisée pour autoriser les utilisateurs.

<?php

namespace App\Providers;

use Illuminate\Contracts\Auth\Access\Gate as GateContract;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider{
   /**
      * The policy mappings for the application.
      *
      * @var array
   */
   
   protected $policies = [
      'App\Model' => 'App\Policies\ModelPolicy',
   ];
   
   /**
      * Register any application authentication / authorization services.
      *
      * @param \Illuminate\Contracts\Auth\Access\Gate $gate
      * @return void
   */
   
   public function boot(GateContract $gate) {
      $this->registerPolicies($gate);
      //
   }
}