Maison cadre php Laravel gestion des autorisations d'installation de Laravel

gestion des autorisations d'installation de Laravel

May 26, 2023 pm 02:27 PM

Laravel est un framework de développement PHP très populaire. Il fournit de nombreux outils et composants pratiques, qui peuvent considérablement améliorer l'efficacité du développement. Dans le processus de développement d'applications, la gestion des droits des utilisateurs est souvent nécessaire. Laravel fournit une fonction de gestion des autorisations très pratique qui peut nous aider à mettre en œuvre un contrôle des autorisations rapidement et en toute sécurité.

Cet article présentera l'installation et la configuration de la gestion des autorisations Laravel sous les aspects suivants :

  1. Installation des composants de gestion des autorisations Laravel
  2. Migration de base de données
  3. Authentification de l'utilisateur
  4. Gestion des rôles et des autorisations
  5. Middleware
  6. Protection des itinéraires

1. Installez le composant de gestion des autorisations Laravel

Dans Laravel, nous pouvons installer le composant spatie/laravel-permission via composer pour implémenter la fonction de gestion des autorisations. Nous pouvons exécuter la commande suivante dans le répertoire racine du projet pour installer ce composant :

composer require spatie/laravel-permission
Copier après la connexion

Une fois l'installation terminée, nous devons ajouter le fournisseur de services de ce composant dans le fichier config/app.php :

'providers' => [
    // ...
    SpatiePermissionPermissionServiceProvider::class,
],
Copier après la connexion

At en même temps, dans le même fichier Ajoutez la façade de ce composant dans :

'aliases' => [
    // ...
    'Permission' => SpatiePermissionFacadesPermission::class,
    'Role' => SpatiePermissionFacadesRole::class,
],
Copier après la connexion

2. Migration de base de données

Après avoir installé le composant, nous devons exécuter la migration de base de données pour créer des tables liées aux autorisations. Nous pouvons utiliser la commande artisan pour générer le fichier de migration de la base de données :

php artisan make:migration create_permission_tables
Copier après la connexion

Ensuite, ouvrez le fichier de migration généré et ajoutez le code suivant :

class CreatePermissionTables extends Migration
{
    public function up()
    {
        Schema::create('permissions', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('guard_name');
            $table->timestamps();
        });

        Schema::create('roles', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('guard_name');
            $table->timestamps();
        });

        Schema::create('model_has_roles', function (Blueprint $table) {
            $table->integer('role_id')->unsigned();
            $table->morphs('model');
            $table->string('model_type')->nullable();
            $table->string('guard_name');
            $table->foreign('role_id')->references('id')->on('roles')
                  ->onDelete('cascade');
            $table->primary(['role_id', 'model_id', 'model_type']);
        });

        Schema::create('model_has_permissions', function (Blueprint $table) {
            $table->integer('permission_id')->unsigned();
            $table->morphs('model');
            $table->string('model_type')->nullable();
            $table->string('guard_name');
            $table->foreign('permission_id')->references('id')->on('permissions')
                  ->onDelete('cascade');
            $table->primary(['permission_id', 'model_id', 'model_type']);
        });

        Schema::create('role_has_permissions', function (Blueprint $table) {
            $table->integer('permission_id')->unsigned();
            $table->integer('role_id')->unsigned();
            $table->string('guard_name');
            $table->foreign('permission_id')->references('id')->on('permissions')
                  ->onDelete('cascade');
            $table->foreign('role_id')->references('id')->on('roles')
                  ->onDelete('cascade');
            $table->primary(['permission_id', 'role_id']);
        });
    }

    public function down()
    {
        Schema::dropIfExists('permissions');
        Schema::dropIfExists('roles');
        Schema::dropIfExists('model_has_roles');
        Schema::dropIfExists('model_has_permissions');
        Schema::dropIfExists('role_has_permissions');
    }
}
Copier après la connexion

Ensuite, nous pouvons exécuter la commande de migration :

php artisan migrate
Copier après la connexion

De cette façon, le fichier associé les tables seront créées dans la base de données.

3. Authentification de l'utilisateur

Ensuite, nous devons implémenter la fonction d'authentification de l'utilisateur dans l'application. Laravel nous a fourni un système d'authentification des utilisateurs très pratique. Il nous suffit d'exécuter la commande suivante :

php artisan make:auth
Copier après la connexion

Cette commande générera une page contenant la connexion de l'utilisateur, l'enregistrement, le changement de mot de passe et d'autres fonctions. Nous pouvons créer et gérer des utilisateurs grâce à ces opérations.

4. Gestion des rôles et des autorisations

Dans la gestion des autorisations Laravel, les rôles et les autorisations sont des concepts très importants. Nous pouvons définir des règles de contrôle d'accès des utilisateurs via des rôles et des autorisations.

  1. Création de rôles

Nous pouvons utiliser la façade Rôle pour créer des rôles. Par exemple :

use SpatiePermissionModelsRole;

$role = Role::create(['name' => 'admin']);
Copier après la connexion

Le code ci-dessus créera un rôle nommé "admin".

  1. Créer des autorisations

De même, nous pouvons utiliser la façade Autorisation pour créer des autorisations :

use SpatiePermissionModelsPermission;

$permission = Permission::create(['name' => 'create posts']);
Copier après la connexion

Le code ci-dessus créera une autorisation appelée "créer des publications".

  1. Accorder des autorisations aux rôles

Maintenant que nous avons des rôles et des autorisations, nous devons également accorder des autorisations aux rôles. Nous pouvons le faire en utilisant la méthode givePermissionTo du rôle :

$role = Role::findByName('admin');
$permission = Permission::findByName('create posts');
$role->givePermissionTo($permission);
Copier après la connexion
  1. Vérifiez si l'utilisateur a les autorisations

Maintenant que nous avons défini le rôle et les autorisations, nous pouvons utiliser la méthode can fournie par la gestion des autorisations de Laravel pour vérifier si l'utilisateur dispose des autorisations. Par exemple :

$user->can('create posts');
Copier après la connexion

Le code ci-dessus renverra une valeur booléenne indiquant si l'utilisateur actuel dispose de l'autorisation "créer des publications".

  1. Vérifiez si l'utilisateur a un rôle

De même, nous pouvons également utiliser la méthode hasRole pour vérifier si l'utilisateur a un certain rôle. Par exemple :

$user->hasRole('admin');
Copier après la connexion

Le code ci-dessus renverra une valeur booléenne indiquant si l'utilisateur actuel a le rôle "admin".

5. Middleware

Nous pouvons utiliser le middleware de Laravel pour protéger nos routes et nos contrôleurs afin d'obtenir un contrôle des autorisations. Voici l'exemple de code :

Route::group([
    'middleware' => ['role:admin'],
], function () {
    Route::get('/admin', function () {
        //
    });
});

Route::group([
    'middleware' => ['permission:create posts'],
], function () {
    Route::get('/new-post', function () {
        //
    });
});
Copier après la connexion

Le code ci-dessus protégera les routes "/admin" et "/new-post" et autorisera uniquement l'accès aux utilisateurs avec le rôle "admin" et l'autorisation "créer des publications".

6. Protection des routes

Enfin, nous devons protéger nos routes et nos contrôleurs. Nous pouvons utiliser les méthodes can et autoriser pour y parvenir.

public function store(Request $request)
{
    $this->authorize('create', Post::class);

    // ...
}

public function edit(Request $request, Post $post)
{
    if (! $request->user()->can('edit', $post)) {
        abort(403);
    }

    // ...
}
Copier après la connexion

Le code ci-dessus protégera les méthodes de magasin et de modification et autorisera uniquement l'accès aux utilisateurs disposant des autorisations "créer" et "modifier".

Résumé

En général, la gestion des autorisations de Laravel est très pratique et sûre. Nous pouvons implémenter le contrôle des autorisations en installant le composant spatie/laravel-permission et utiliser les nombreuses méthodes et fonctions fournies par Laravel pour gérer les rôles et les autorisations. Grâce au middleware et à la protection des routes, nous pouvons facilement protéger nos applications et restreindre l'accès des utilisateurs.

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quel est le meilleur, Django ou Laravel? Quel est le meilleur, Django ou Laravel? Mar 28, 2025 am 10:41 AM

Django et Laravel sont tous deux des frameworks à pile. Django convient aux développeurs Python et à la logique métier complexe, tandis que Laravel convient aux développeurs PHP et à la syntaxe élégante. 1.Django est basé sur Python et suit la philosophie "Battery-Complete", adaptée au développement rapide et à une grande concurrence. 2.Laravel est basé sur PHP, mettant l'accent sur l'expérience du développeur et convient aux projets de petite et moyenne taille.

Laravel et le backend: alimentation logique d'application Web Laravel et le backend: alimentation logique d'application Web Apr 11, 2025 am 11:29 AM

Comment Laravel joue-t-il un rôle dans la logique backend? Il simplifie et améliore le développement backend par le biais de systèmes de routage, d'éloquente, d'authentification et d'autorisation, d'événements et d'auditeurs et d'optimisation des performances. 1. Le système de routage permet la définition de la structure d'URL et demande la logique de traitement. 2.Lao-éloquente simplifie l'interaction de la base de données. 3. Le système d'authentification et d'autorisation est pratique pour la gestion des utilisateurs. 4. L'événement et l'écoute implémentent la structure de code couplée de manière lâche. 5. L'optimisation des performances améliore l'efficacité de l'application par la mise en cache et la file d'attente.

Exemple d'introduction de Laravel Exemple d'introduction de Laravel Apr 18, 2025 pm 12:45 PM

Laravel est un cadre PHP pour la création facile des applications Web. Il fournit une gamme de fonctionnalités puissantes, notamment: Installation: Installez le Laravel CLI globalement avec Composer et créez des applications dans le répertoire du projet. Routage: définissez la relation entre l'URL et le gestionnaire dans Routes / web.php. Voir: Créez une vue dans les ressources / vues pour rendre l'interface de l'application. Intégration de la base de données: fournit une intégration prête à l'emploi avec des bases de données telles que MySQL et utilise la migration pour créer et modifier des tables. Modèle et contrôleur: le modèle représente l'entité de la base de données et le contrôleur traite les demandes HTTP.

Quel est le meilleur PHP ou Laravel? Quel est le meilleur PHP ou Laravel? Mar 27, 2025 pm 05:31 PM

PHP et Laravel ne sont pas directement comparables, car Laravel est un cadre basé sur PHP. 1.Php convient aux petits projets ou à un prototypage rapide car il est simple et direct. 2. Laravel convient à de grands projets ou à un développement efficace car il offre des fonctions et des outils riches, mais a une courbe d'apprentissage abrupte et peut ne pas être aussi bon que PHP pur.

Laravel est-il un frontend ou un backend? Laravel est-il un frontend ou un backend? Mar 27, 2025 pm 05:31 PM

LaravelisabackendFrameworkBuiltonPhp, conçue pourwebapplicationdevelopment.itfocusonServer-sidelogic, databasemanagement, andapplicationsstructure, andcanbenegrategratedwithfrontentechnologies likevue.jsorrectForfull-stackdevelopment.

Comment apprendre Laravel comment apprendre Laravel gratuitement Comment apprendre Laravel comment apprendre Laravel gratuitement Apr 18, 2025 pm 12:51 PM

Vous voulez apprendre le cadre de Laravel, mais ne souffrez pas de ressources ni de pression économique? Cet article vous fournit un apprentissage gratuit de Laravel, vous apprenant à utiliser des ressources telles que les plateformes en ligne, les documents et les forums communautaires pour jeter une base solide pour votre parcours de développement PHP de la mise en place de maîtrise.

Polyvylity de Laravel: des sites simples aux systèmes complexes Polyvylity de Laravel: des sites simples aux systèmes complexes Apr 13, 2025 am 12:13 AM

Le projet de développement de Laravel a été choisi en raison de sa flexibilité et de sa puissance pour répondre aux besoins de différentes tailles et complexités. Laravel fournit un système de routage, Eloquentorm, une ligne de commande artisanale et d'autres fonctions, soutenant le développement de blogs simples aux systèmes complexes au niveau de l'entreprise.

Fonction de connexion de l'utilisateur de Laravel Fonction de connexion de l'utilisateur de Laravel Apr 18, 2025 pm 12:48 PM

Laravel fournit un cadre Auth complet pour implémenter les fonctions de connexion des utilisateurs, notamment: définir des modèles d'utilisateurs (modèle éloquent), créant des formulaires de connexion (moteur de modèle de lame), rédaction des contrôleurs de connexion (héritage de l'authentification \ loginContrôleur), vérifiant les demandes de connexion (Auth :: tentative) Redirection après la connexion de la connexion, la limitation de la sécurité). De plus, le cadre Auth fournit également des fonctions telles que la réinitialisation des mots de passe, l'enregistrement et la vérification des e-mails. Pour plus de détails, veuillez consulter la documentation de Laravel: https://laravel.com/doc

See all articles