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