Maison cadre php Laravel Comment implémenter la commutation d'autorisations dynamique basée sur les rôles dans Laravel

Comment implémenter la commutation d'autorisations dynamique basée sur les rôles dans Laravel

Nov 04, 2023 pm 12:58 PM
laravel 动态切换 Autorisations de rôle

Comment implémenter la commutation dautorisations dynamique basée sur les rôles dans Laravel

Laravel est un framework de développement d'applications Web populaire basé sur le langage PHP. Il possède de nombreuses fonctionnalités excellentes qui permettent aux programmeurs de créer rapidement des applications Web de haute qualité. Cela inclut l'utilisation de middleware pour implémenter des fonctions importantes telles que l'authentification et le contrôle des autorisations. Dans cet article, nous explorerons comment implémenter la commutation d'autorisations dynamique basée sur les rôles dans Laravel, tout en fournissant des exemples de code spécifiques.

Qu'est-ce que le changement d'autorisation dynamique basé sur les rôles ?

Le changement d'autorisation dynamique basé sur les rôles est un mode de contrôle d'autorisation courant. Dans ce modèle, les rôles d'utilisateur dans le système représentent un ensemble d'autorisations d'opération. Une fois connectés, les utilisateurs se verront attribuer les autorisations correspondantes en fonction de leurs rôles. Pendant l'utilisation du système par l'utilisateur, l'administrateur système peut modifier le rôle de l'utilisateur en arrière-plan, modifiant ainsi les autorisations d'exploitation de l'utilisateur.

Implémenter la commutation d'autorisations dynamique basée sur les rôles dans Laravel

Laravel fournit de nombreuses excellentes fonctionnalités pour implémenter la commutation d'autorisations dynamique basée sur les rôles. Ci-dessous, nous allons implémenter un exemple simple étape par étape. Grâce à cet exemple, vous pourrez mieux comprendre comment implémenter la commutation d'autorisations dynamique basée sur les rôles dans Laravel.

Étape 1 : Créer une base de données et une table utilisateur

Tout d'abord, créons une base de données et une table utilisateur. Le tableau des utilisateurs comprend l'ID, le nom d'utilisateur, l'e-mail, le mot de passe, l'ID de rôle, l'heure de création et l'heure de mise à jour.

Étape 2 : Définir le modèle utilisateur

Ensuite, nous devons définir le modèle utilisateur correspondant. Dans Laravel, vous pouvez utiliser la commande Artisan pour créer un modèle :

php artisan make:model User
Copier après la connexion

Ensuite, nous pouvons définir une méthode AppartientTo() qui associe le modèle de rôle au modèle User généré. L'exemple de code est le suivant :

class User extends Model
{
    public function role()
    {
        return $this->belongsTo('AppRole');
    }
}
Copier après la connexion

Étape 3. : Créez la table des rôles et le modèle de rôle

Créez une feuille de personnage et un modèle de personnage. La table des rôles comprend deux champs : ID et nom du rôle.

Étape 4 : Définir la relation entre les modèles de rôle

Dans le modèle de rôle, nous pouvons définir les autorisations dont dispose ce rôle. Vous pouvez utiliser la méthode AppartientToMany(), qui peut établir une relation plusieurs-à-plusieurs entre les rôles et les autorisations. L'exemple de code est le suivant :

class Role extends Model
{
    public function permissions()
    {
        return $this->belongsToMany('AppPermission', 'permission_role');
    }
}
Copier après la connexion

Étape 5 : Créer une table d'autorisations et un modèle d'autorisations

Créez une table d'autorisations et un modèle d'autorisations. La table des autorisations comprend deux champs : ID et nom de l'autorisation.

Étape 6 : Définir la relation entre les modèles d'autorisation

Dans le modèle d'autorisation, nous pouvons définir la relation entre les rôles et les autorisations. Vous pouvez utiliser la méthode AppartientToMany(), qui peut établir une relation plusieurs-à-plusieurs entre les rôles et les autorisations. L'exemple de code est le suivant :

class Permission extends Model
{
    public function roles()
    {
        return $this->belongsToMany('AppRole', 'permission_role');
    }
}
Copier après la connexion

Étape 7 : Définir le middleware

Dans Laravel, le middleware est utilisé pour gérer les demandes et les réponses, ce qui inclut l'authentification et l'autorisation. Nous pouvons définir un middleware pour vérifier si l'utilisateur a l'autorisation d'effectuer l'opération demandée. L'exemple de code est le suivant :

namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesAuth;

class CheckPermission
{
    public function handle($request, Closure $next,$permissions)
    {
        $sessionUser = Auth::user();

        foreach($sessionUser->role()->get() as $role)
        {
            $role_permissions = $role->permissions()->pluck('name')->toArray();
            foreach($permissions as $perm)
            {
                if (in_array($perm, $role_permissions)) {
                    return $next($request);
                } 
            }
        }
        return redirect('/login');
    }
}
Copier après la connexion

Dans le code ci-dessus, nous récupérons d'abord les informations utilisateur de la session et renvoyons les autorisations du rôle correspondant via le rôle de l'utilisateur. La variable $permissions contient les autorisations qui doivent être contrôlées. . Si l'utilisateur a l'autorisation, l'exécution continue. Sinon, redirigez vers la page de connexion.

Étape 8 : Utiliser le middleware

Nous pouvons définir le middleware CheckPermission dans la route pour empêcher les utilisateurs d'utiliser certaines routes. L'exemple de code est le suivant :

Route::get('admin/dashboard',['middleware'=>['permission'],'uses'=>'AdminController@dashboard']);
Copier après la connexion

Dans le contrôleur, nous pouvons vérifier si l'utilisateur a la permission d'utiliser cette route comme suit :

class AdminController extends Controller
{
    public function dashboard()
    {
        $this->middleware('check-permission:user-list');
        return view('admin.index');
    }
}
Copier après la connexion

Après avoir accédé à la route dans le navigateur, obtenez le rôle et les autorisations de l'utilisateur actuel dans la session. . Si l'utilisateur a l'autorisation, l'exécution continue.

Conclusion

Dans cet article, nous avons expliqué comment implémenter la commutation d'autorisations dynamique basée sur les rôles dans Laravel. La mise en œuvre du contrôle des autorisations via un middleware est une méthode très courante. Lors de la mise en œuvre, assurez-vous que votre système dispose d'un système de gestion des rôles complet et qu'il existe une relation plusieurs-à-plusieurs entre les rôles et les autorisations. Ce n'est qu'ainsi que des fonctions d'authentification et d'autorisation très puissantes pourront être implémentées dans Laravel.

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)

Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Comment obtenir le code de retour lorsque l'envoi par e-mail échoue à Laravel? Apr 01, 2025 pm 02:45 PM

Méthode pour obtenir le code de retour lorsque l'envoi par e-mail de Laravel échoue. Lorsque vous utilisez Laravel pour développer des applications, vous rencontrez souvent des situations où vous devez envoyer des codes de vérification. Et en réalité ...

La tâche de calendrier Laravel n'est pas exécutée: que dois-je faire si la tâche n'est pas en cours d'exécution après le calendrier: Exécuter la commande? La tâche de calendrier Laravel n'est pas exécutée: que dois-je faire si la tâche n'est pas en cours d'exécution après le calendrier: Exécuter la commande? Mar 31, 2025 pm 11:24 PM

Laravel Schedule Tâche d'exécution de dépannage non réactif Lorsque vous utilisez la planification des tâches de calendrier de Laravel, de nombreux développeurs rencontreront ce problème: Schedule: Exécuter ...

Dans Laravel, comment gérer la situation où les codes de vérification ne sont pas envoyés par e-mail? Dans Laravel, comment gérer la situation où les codes de vérification ne sont pas envoyés par e-mail? Mar 31, 2025 pm 11:48 PM

La méthode de traitement de l'échec de l'e-mail de Laravel à envoyer le code de vérification est d'utiliser Laravel ...

Comment implémenter la fonction de table personnalisée de clic pour ajouter des données dans l'administrateur DCAT? Comment implémenter la fonction de table personnalisée de clic pour ajouter des données dans l'administrateur DCAT? Apr 01, 2025 am 07:09 AM

Comment implémenter la fonction du tableau de Cliquez sur personnalisé pour ajouter des données dans DCATADMIN (Laravel-Admin) lors de l'utilisation de DCAT ...

Laravel - Serveur de vidage Laravel - Serveur de vidage Aug 27, 2024 am 10:51 AM

Laravel - Dump Server - Le serveur de dump Laravel est livré avec la version de Laravel 5.7. Les versions précédentes n'incluent aucun serveur de dump. Le serveur de vidage sera une dépendance de développement dans le fichier laravel/laravel composer.

Partage de connexion Laravel Redis: pourquoi la méthode de sélection affecte-t-elle d'autres connexions? Partage de connexion Laravel Redis: pourquoi la méthode de sélection affecte-t-elle d'autres connexions? Apr 01, 2025 am 07:45 AM

L'impact du partage des connexions redis dans Laravel Framework et sélectionnez Méthodes Lors de l'utilisation de Laravel Framework et Redis, les développeurs peuvent rencontrer un problème: grâce à la configuration ...

Laravel Multi-Lenant Extension Stancl / Tenancy: Comment personnaliser l'adresse hôte d'une connexion de base de données de locataire? Laravel Multi-Lenant Extension Stancl / Tenancy: Comment personnaliser l'adresse hôte d'une connexion de base de données de locataire? Apr 01, 2025 am 09:09 AM

Connexion de la base de données des locataires personnalisés dans le package d'extension multi-locataire Laravel Stancl / location Lors de la construction d'applications multi-locataires à l'aide du package d'extension multi-locataire Laravel Stancl / location, ...

Laravel – URL de l'action Laravel – URL de l'action Aug 27, 2024 am 10:51 AM

Laravel - URL d'action - Laravel 5.7 introduit une nouvelle fonctionnalité appelée « URL d'action appelable ». Cette fonctionnalité est similaire à celle de Laravel 5.6 qui accepte la méthode string in action. L'objectif principal de la nouvelle syntaxe introduite par Laravel 5.7 est de diriger

See all articles