Maison  >  Article  >  cadre php  >  Comment implémenter le routage dynamique basé sur les autorisations et le saut de page dans Laravel

Comment implémenter le routage dynamique basé sur les autorisations et le saut de page dans Laravel

王林
王林original
2023-11-04 15:27:291052parcourir

Comment implémenter le routage dynamique basé sur les autorisations et le saut de page dans Laravel

La mise en œuvre d'un routage dynamique basé sur les autorisations et de sauts de page dans Laravel peut nous aider à contrôler de manière plus flexible les autorisations d'accès des utilisateurs et à obtenir une gestion plus raffinée des autorisations. Ci-dessous, l'auteur combinera des exemples de code réels pour présenter en détail comment implémenter le routage dynamique basé sur les autorisations et les sauts de page dans Laravel.

  1. Principe de base

Le contrôle des autorisations dans Laravel est généralement implémenté à l'aide d'un middleware, et le routage dynamique et les sauts de page basés sur les autorisations sont également implémentés via un middleware. Plus précisément, nous pouvons ajouter un middleware lors de la définition de l'itinéraire, puis utiliser le middleware pour déterminer si l'utilisateur a l'autorisation d'accéder à l'itinéraire. Sinon, l'utilisateur sera redirigé vers la page d'invite d'accès non autorisé ou d'autres pages spécifiées.

  1. Étapes de mise en œuvre

(1) Créer un itinéraire

Tout d'abord, nous devons définir les itinéraires qui nécessitent un contrôle d'autorisation dans l'itinéraire. Lors de la définition d'un itinéraire, vous pouvez utiliser la méthode middleware pour spécifier le middleware, comme indiqué ci-dessous :

Route::get('/admin/user/index', 'UserController@index')->middleware('permission:user-index');

Parmi eux, « permission:user-index » signifie utiliser le middleware nommé permission pour le jugement des autorisations. Ici, nous spécifions les autorisations requises via 'user-index'. Cet « index utilisateur » peut être défini comme d'autres noms d'autorisation en fonction de la situation réelle.

(2) Créer un middleware

Ensuite, nous devons créer un middleware pour le jugement des autorisations et le saut de page. Dans Laravel, vous pouvez utiliser la commande php artisan make:middleware pour créer un middleware, comme indiqué ci-dessous :

php artisan make:middleware PermissionMiddleware

Une fois l'exécution terminée, le fichier PermissionMiddleware.php sera généré dans le répertoire app/Http/Middleware.

(3) Écrire la logique du middleware

Dans le fichier app/Http/Middleware/PermissionMiddleware.php, nous devons écrire le code logique du middleware. Dans cet exemple, nous pouvons utiliser la façade Auth de Laravel et la combiner avec notre propre système d'autorisation pour déterminer si l'utilisateur est autorisé à accéder à l'itinéraire.

<?php

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesAuth;

class PermissionMiddleware
{
    public function handle($request, Closure $next, $permission)
    {
        // 获取当前用户
        $user = auth()->user();

        // 判断是否有权限访问
        if (!$user->can($permission)) {
            // 无权限访问,进行跳转
            abort(404);
        }

        // 有权限访问,继续执行
        return $next($request);
    }
}

Parmi eux, le paramètre $permission est le nom d'autorisation transmis dans la définition de la route, qui peut être utilisé pour déterminer si l'utilisateur actuel a l'autorisation d'accéder à la route. S'il n'y a pas d'autorisation, nous pouvons utiliser la fonction d'abandon pour sauter. Ici, nous utilisons abort(404) pour accéder à la page 404. Vous pouvez également la modifier en fonction de la situation réelle.

(4) Enregistrer le middleware

Avant d'utiliser le middleware, nous devons enregistrer le middleware dans l'application Laravel. Dans le fichier app/Http/Kernel.php, vous pouvez trouver l'attribut $middlewareGroups et l'attribut $routeMiddleware. Nous pouvons enregistrer le middleware dans ces deux propriétés séparément.

Lié à la propriété $middlewareGroups :

'web' => [
    // ...
    AppHttpMiddlewarePermissionMiddleware::class,
],

Lié à la propriété $routeMiddleware :

'permission' => AppHttpMiddlewarePermissionMiddleware::class,

Ici, nous lions PermissionMiddleware au groupe middleware 'web', ce qui signifie que le middleware sera utilisé dans toutes les requêtes de routage Web mises en œuvre.

(5) Test

Après avoir terminé les étapes ci-dessus, nous pouvons tester. Lors de ce test, nous pouvons autoriser manuellement le rôle correspondant dans la base de données, puis accéder à l'URL correspondante pour voir si nous avons les droits d'accès. Je n’entrerai pas dans les détails ici.

  1. Résumé

Grâce aux étapes ci-dessus, nous pouvons implémenter le routage dynamique basé sur les autorisations et le saut de page dans Laravel. En utilisant un middleware, nous pouvons utiliser notre propre système d'autorisations pour contrôler de manière flexible les autorisations d'accès des utilisateurs et obtenir une gestion plus raffinée des autorisations.

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!

Déclaration:
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