Maison > cadre php > Laravel > Comment implémenter un filtrage des données basé sur les autorisations et des restrictions d'accès dans Laravel

Comment implémenter un filtrage des données basé sur les autorisations et des restrictions d'accès dans Laravel

WBOY
Libérer: 2023-11-02 17:40:50
original
1021 Les gens l'ont consulté

Comment implémenter un filtrage des données basé sur les autorisations et des restrictions daccès dans Laravel

Laravel est un excellent framework PHP qui fournit de puissants outils d'authentification et d'autorisation pour implémenter facilement un filtrage des données basé sur les autorisations et des restrictions d'accès dans les applications.

Cet article montrera comment utiliser les politiques (Policy) dans Laravel pour le filtrage des données basé sur les autorisations et les restrictions d'accès, et fournira des exemples de code spécifiques.

  1. Créer une classe de stratégie

Dans Laravel, vous pouvez utiliser la ligne de commande pour générer rapidement une classe de stratégie. Entrez la commande suivante dans le terminal :

php artisan make:policy PostPolicy

Cette commande générera une classe de stratégie nommée PostPolicy.

  1. Définissez la méthode de politique

Ensuite, définissez la méthode de politique dans la classe PostPolicy. Par exemple, si vous devez interdire uniquement aux administrateurs et aux auteurs de publication de modifier des publications, vous pouvez ajouter la méthode suivante à la classe PostPolicy :

public function update(User $user, Post $post)
{
    return $user->isAdmin() || $user->id === $post->user_id;
}
Copier après la connexion

La méthode ci-dessus utilise le modèle User et le modèle Post fournis par Laravel, où $user est le l'utilisateur actuel et $post est la publication actuelle. Cette méthode retournera vrai si l'utilisateur actuel est un administrateur ou si l'utilisateur actuel est l'auteur de la publication, sinon elle retournera faux.

  1. Enregistrez la classe de stratégie

Ensuite, vous devez enregistrer la classe de stratégie dans AppServiceProvider. Ajoutez le code suivant dans la méthode de démarrage :

<?php

namespace AppProviders;

use IlluminateFoundationSupportProvidersAuthServiceProvider as ServiceProvider;
use IlluminateSupportFacadesGate;
use AppPoliciesPostPolicy;
use AppPost;

class AuthServiceProvider extends ServiceProvider
{
    protected $policies = [
        Post::class => PostPolicy::class,
    ];

    public function boot()
    {
        $this->registerPolicies();
    }
}
Copier après la connexion

Dans le code ci-dessus, la variable $policies mappe le modèle Post à la classe PostPolicy, puis enregistre la classe de stratégie dans la méthode Gate::policy.

  1. Utilisez des classes de stratégie pour le filtrage des données et les restrictions d'accès

Enfin, vous pouvez utiliser des classes de stratégie dans le contrôleur pour le filtrage des données et les restrictions d'accès. Par exemple, dans le contrôleur de publication :

public function edit(Post $post)
{
    $this->authorize('update', $post);

    return view('posts.edit', compact('post'));
}
Copier après la connexion

Dans le code ci-dessus, la méthode d'autorisation est utilisée pour vérifier si l'utilisateur actuel a l'autorisation de mettre à jour la publication. Si l'utilisateur a l'autorisation, revenez à la page d'édition, sinon une exception HTTP 403 est levée.

En résumé, l'utilisation de classes de stratégie peut facilement implémenter un filtrage des données basé sur les autorisations et des restrictions d'accès dans Laravel, améliorant ainsi la sécurité et la fiabilité du système.

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