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
WBOYoriginal
2023-11-02 17:40:501033parcourir

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

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();
    }
}

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'));
}

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!

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