Maison > cadre php > Laravel > le corps du texte

Meilleures pratiques pour les fonctionnalités d'autorisations de Laravel : comment gérer les exceptions et les erreurs d'autorisation

WBOY
Libérer: 2023-11-04 12:37:56
original
1267 Les gens l'ont consulté

Meilleures pratiques pour les fonctionnalités dautorisations de Laravel : comment gérer les exceptions et les erreurs dautorisation

Bonnes pratiques pour les fonctions d'autorisation de Laravel : Comment gérer les exceptions et les erreurs d'autorisation

Introduction :
Laravel est un puissant framework de développement PHP qui fournit une série de fonctions de contrôle d'autorisation pour nous aider à gérer facilement les rôles et les autorisations des utilisateurs. Cependant, dans le processus de développement proprement dit, nous sommes souvent confrontés à des exceptions et à des erreurs d’autorisation. Cet article décrit quelques bonnes pratiques pour gérer les exceptions et les erreurs d’autorisation, et fournit des exemples de code spécifiques.

1. Gestion des exceptions
Dans Laravel, nous pouvons utiliser le mécanisme de gestion des exceptions pour capturer et gérer les exceptions liées aux autorisations. Lors de la gestion des exceptions d'autorisation, nous pouvons personnaliser les classes d'exceptions et les enregistrer pour détecter des exceptions d'autorisation spécifiques.

  1. Créer une classe d'exceptions personnalisée
    Tout d'abord, nous pouvons créer une classe d'exceptions personnalisée pour gérer les exceptions liées aux autorisations. Nous pouvons créer un fichier PermissionException.php dans le répertoire app/Exceptions. Le code est le suivant :
<?php

namespace AppExceptions;

use Exception;

class PermissionException extends Exception
{
    /**
     * Render the exception as an HTTP response.
     *
     * @param  IlluminateHttpRequest  $request
     * @return IlluminateHttpResponse
     */
    public function render($request)
    {
        return response()->json(['message' => 'Permission denied'], 403);
    }
}
Copier après la connexion

Dans cette classe d'exception personnalisée, nous remplaçons la méthode render(), qui est responsable du rendu des exceptions sous forme de réponses HTTP. Dans cet exemple, lorsqu'une exception d'autorisation est interceptée, nous renvoyons une réponse JSON contenant le message d'erreur et le code d'état HTTP.

  1. Enregistrer la classe d'exception personnalisée
    Ensuite, nous devons enregistrer la classe d'exception personnalisée dans le système de gestion des exceptions de Laravel. Recherchez le fichier app/Exceptions/Handler.php, recherchez la méthode register() et ajoutez le code suivant :
use AppExceptionsPermissionException;
Copier après la connexion

Dans cette méthode, nous utilisons le mot-clé use pour importer la classe d'exception personnalisée afin de garantir que Laravel puisse la trouver. .

  1. Lancer une exception d'autorisation
    Lorsque nous devons vérifier si l'utilisateur dispose d'autorisations spécifiques, nous pouvons lancer une exception d'autorisation dans le contrôleur ou le middleware correspondant. Voici un exemple de code :
<?php

namespace AppHttpMiddleware;

use Closure;
use AppExceptionsPermissionException;

class CheckAdmin
{
    public function handle($request, Closure $next)
    {
        if (! $request->user()->isAdmin()) {
            throw new PermissionException();
        }

        return $next($request);
    }
}
Copier après la connexion

Dans cet exemple, si l'utilisateur actuel ne dispose pas de droits d'administrateur, nous lancerons une exception d'autorisation via le mot-clé throw. Puisque nous avons enregistré la classe d'exception personnalisée, Laravel interceptera et restituera automatiquement l'exception.

2. Gestion des erreurs
En ce qui concerne les erreurs d'autorisation, nous devons fournir des pages ou des messages d'erreur conviviaux pour donner des commentaires aux utilisateurs. Dans Laravel, nous pouvons y parvenir grâce à un middleware et à des gestionnaires d'exceptions personnalisés.

  1. Créer un gestionnaire d'exceptions personnalisé
    Tout d'abord, nous pouvons créer un gestionnaire d'exceptions personnalisé pour gérer les erreurs d'autorisation.
<?php

namespace AppExceptions;

use Exception;
use IlluminateAuthAccessAuthorizationException;
use IlluminateFoundationExceptionsHandler as ExceptionHandler;

class Handler extends ExceptionHandler
{
    // ...

    /**
     * Render the exception as an HTTP response.
     *
     * @param  IlluminateHttpRequest  $request
     * @param  Exception  $exception
     * @return IlluminateHttpResponse
     */
    public function render($request, Exception $exception)
    {
        if ($exception instanceof AuthorizationException) {
            return response()->view('errors.forbidden', [], 403);
        }

        return parent::render($request, $exception);
    }
}
Copier après la connexion

Dans ce processeur, nous remplaçons la méthode render(). Lorsqu'une AuthorizationException est interceptée, nous pouvons renvoyer une réponse HTTP contenant la page d'erreur. Dans cet exemple, nous renvoyons une vue appelée interdit.blade.php qui est utilisée pour afficher la page d'erreur « Interdit ».

  1. Mettre à jour le fichier de configuration
    Pour utiliser un gestionnaire d'exceptions personnalisé, nous devons également mettre à jour le fichier de configuration de Laravel. Recherchez le fichier config/app.php, recherchez la clé « exceptions » à la ligne 84 et remplacez sa valeur par notre gestionnaire d'exceptions personnalisé :
'exceptions' => [
    // ...
    AppExceptionsHandler::class,
],
Copier après la connexion

Cela garantira que Laravel utilise notre gestionnaire d'exceptions personnalisé pour gérer les erreurs d'autorisation.

Conclusion :
Laravel fournit des fonctionnalités puissantes pour gérer les exceptions et les erreurs d'autorisation. Grâce à des classes d'exceptions personnalisées et des gestionnaires d'exceptions, nous pouvons capturer et gérer les exceptions liées aux autorisations et fournir des pages d'erreur ou des messages conviviaux aux utilisateurs. J'espère que le contenu de cet article pourra vous aider à mieux gérer les exceptions et les erreurs d'autorisation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!