


Comment implémenter des middleware et des filtres personnalisés dans les applications Laravel?
Comment implémenter des middleware et des filtres personnalisés dans les applications Laravel?
Implémentation de middleware personnalisé:
Le middleware de Laravel fournit un mécanisme puissant pour filtrer les demandes HTTP entrant dans votre application. La création de middleware personnalisés vous permet d'injecter votre propre logique dans le cycle de vie de la demande. Voici un guide étape par étape:
- Créez le middleware: Utilisez la commande d'Artisan:
php artisan make:middleware CheckAge
. Cela crée un nouveau fichier middleware dansapp/Http/Middleware/CheckAge.php
. - Définissez la logique du middleware: dans la méthode
handle
de votre middleware, vous placera votre logique personnalisée. Cette méthode reçoit une demande ($request
) et une fermeture ($next
). La fermeture représente le middleware suivant ou le gestionnaire d'itinéraire. Exemple:
<code class="php"><?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class CheckAge { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse */ public function handle(Request $request, Closure $next) { if ($request->age </code>
- Enregistrez le middleware: vous devez enregistrer votre middleware nouvellement créé dans
app/Http/Kernel.php
. Ajoutez-le au tableau$routeMiddleware
:
<code class="php">protected $routeMiddleware = [ // ... other middleware ... 'checkage' => \App\Http\Middleware\CheckAge::class, ];</code>
- Attribuez le middleware à un itinéraire: Enfin, affectez le middleware à un itinéraire spécifique ou un groupe de routes dans vos
routes/web.php
ouroutes/api.php
Fichier:
<code class="php">Route::get('/profile', [ProfileController::class, 'show'])->middleware('checkage');</code>
Implémentation de filtres personnalisés (Remarque: la terminologie de Laravel utilise généralement "middleware" au lieu de "filtres"):
Alors que Laravel n'utilise pas explicitement le terme "filtre" de la même manière que certains cadres plus anciens, le middleware sert efficacement le même objectif. L'exemple de code ci-dessus montre un comportement de type filtre en vérifiant l'âge et en redirigeant si la condition n'est pas remplie. La méthode handle
dans le middleware agit comme la fonction filtrante.
Quelles sont les meilleures pratiques pour créer un middleware Laravel efficace et réutilisable?
- Principe de responsabilité unique: chaque middleware doit avoir une tâche spécifique. Évitez de créer du middleware monolithique qui gère plusieurs opérations non liées. Cela améliore la lisibilité, la maintenabilité et la réutilisabilité.
- Gardez-le concis: le middleware doit être court et concentré. La logique complexe doit être extraite dans des services ou des classes séparés.
- Utilisez l'injection de dépendance: injectez les dépendances dans votre constructeur de middleware au lieu de les créer à l'intérieur de la méthode
handle
. Cela améliore la testabilité et la maintenabilité. - Gestion des erreurs appropriée: implémentez une gestion des erreurs robuste pour gérer gracieusement les exceptions et empêcher un comportement inattendu. Les erreurs de journalisation de manière appropriée.
- Testabilité: Écrivez des tests unitaires pour votre middleware pour s'assurer qu'ils fonctionnent correctement et pour attraper des régressions. Utilisez une moquerie pour isoler votre middleware à partir de dépendances externes pendant les tests.
- Utilisez des interfaces (pour des scénarios complexes): pour une logique de middleware plus complexe où vous pourriez avoir besoin d'implémentations différentes en fonction du contexte, envisagez d'utiliser des interfaces et des classes abstraites.
Comment puis-je utiliser le middleware pour gérer l'authentification et l'autorisation dans votre application Laravel?
Laravel fournit un middleware intégré pour l'authentification ( auth
) et l'autorisation ( auth.basic
, can
, etc.). Vous pouvez les utiliser directement ou créer des middleware personnalisés pour étendre ou personnaliser la logique d'authentification / d'autorisation.
Exemple à l'aide de middleware intégré:
<code class="php">Route::get('/profile', [ProfileController::class, 'show'])->middleware('auth'); //Requires authentication Route::get('/admin', [AdminController::class, 'index'])->middleware('auth', 'admin'); //Requires authentication and admin role (assuming you have an 'admin' middleware defined)</code>
Exemple d'autorisation personnalisée Middleware:
<code class="php"><?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class CheckAdmin { public function handle(Request $request, Closure $next) { if (Auth::check() && Auth::user()->isAdmin()) { return $next($request); } abort(403, 'Unauthorized'); // Return 403 Forbidden if not an admin } }</code>
N'oubliez pas d'enregistrer ce middleware CheckAdmin
dans votre fichier app/Http/Kernel.php
.
Quels sont les pièges courants à éviter lors de la mise en œuvre de middleware et de filtres personnalisés dans Laravel?
- Boucles infinies: soyez prudent lors de la redirection ou de la fin des demandes dans le middleware. Le middleware mal structuré peut créer des boucles infinies si elle n'est pas gérée correctement.
- Sur-utilisation de middleware: Évitez de chaîner trop de middleware ensemble, car cela peut conduire à une dégradation des performances. Optimisez votre pile de middleware pour l'efficacité.
- Ignorer les exceptions: gérez toujours les exceptions potentielles au sein de votre middleware pour empêcher les plantages d'applications inattendus. Utilisez
try...catch
Blocks pour gérer gracieusement les erreurs. - Couplage serré: Évitez de coupler étroitement votre middleware à des contrôleurs ou des modèles spécifiques. Concevez votre middleware pour être aussi générique et réutilisable que possible.
- Vulnérabilités de sécurité: valider et désinfecter soigneusement toutes les données transmises via votre middleware pour éviter les vulnérabilités de sécurité comme les scripts inter-sites (XSS) ou l'injection SQL. Désinfecter toujours les entrées des utilisateurs.
- Oublier d'enregistrer le middleware: assurez-vous d'enregistrer correctement votre middleware personnalisé dans le tableau
$routeMiddleware
d'app/Http/Kernel.php
. Une erreur courante est d'oublier cette étape, rendant le middleware inefficace.
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!

L'édition de documents collaborative est un outil efficace pour les équipes distribuées afin d'optimiser leurs workflows. Il améliore la communication et les progrès du projet grâce à des boucles de collaboration et de rétroaction en temps réel, et les outils communs incluent Google Docs, Microsoft Teams et Notion. Faites attention à des défis tels que le contrôle des versions et la courbe d'apprentissage lorsque vous l'utilisez.

ThepreviousVersionofLaraveLissupported withbugfixesforsixmonthsandSecurityFixesForoneyEarfteranEwmaJorversion'srelease.Croite-compritsThisSupporttimelineScricialForPlanningUpgrades, assurant la mise en place de la stabilité et la mise en place des éléments et les économies de lamence, et la stabilité et la conduite de la rémunération et la santé

LaravelCanBeefectively UsedForBothFronttendandBackendDevelopment.1) Backend: Utilizelaravel'SeloventormforsImpplifiedDatabaseInteractions.2) Frontend: LefetherBlatemplateForCleanhtmland Integratevue.jsfordynamicsPas, STANDSEANSHEST-BACKENDINTEG.

LaravelCanBeusedFullLStackDevelopment.1) BackendmasteryWithLaravel'SexpressivesYntaxAndFeaturesLILLICYELOQUENTormfordatabasemanagement.2)

Réponse: Les meilleurs outils pour la mise à niveau de Laravel incluent le guide de mise à niveau de Laravel, Laravelshift, Rector, Composer et Laravelpint. 1. Utilisez le guide de mise à niveau de Laravel comme feuille de route de mise à niveau. 2. Utilisez Laravelshift pour automatiser la plupart des travaux de mise à niveau, mais cela nécessite un examen manuel. 3. Refacteur automatiquement le code via le recteur, et vous devez comprendre et éventuellement personnaliser ses règles. 4. Utilisez le compositeur pour gérer les dépendances et faire attention aux éventuels conflits de dépendance. 5. Exécutez Laravelpint pour maintenir la cohérence du style de code, mais il ne résout pas les problèmes fonctionnels.

ToenhanceengagementAndCoheSionAmongDstributedTeamsBeyondzoom, implémentations de typeStrates: 1) OrganizeVirtualCoffeebreaksForInformalChats, 2) usEasynchronousToolSlikeslackFornon-Workdissions, 3) IntrodugamificationwithTeamGamesorChallengs, and4) encourage

Laravel10 introducesseveralBreakingChanges: 1) itRequiresphp8.1orHigher, 2) theRouserviceProviderNowUSESABOOTMethodForLoadingRoutes, 3) thewithetimestamps () MethodonEloventrelationShipSepresecated, and4) CLASSNOWPRES

TOMAINTAINFOCUSANDMOTIVATIONINREMOTEWork, CreateAstructuredenvironment, GestiondigitalDistractions, FosterMotivation ThroughsocialInteractions et legoalseting, maintien de la vie de vie et usureAppropriateTechnology.1) SetUpadediatedWorkspace andstickToaroutine.


Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

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 !

Article chaud

Outils chauds

mPDF
mPDF est une bibliothèque PHP qui peut générer des fichiers PDF à partir de HTML encodé en UTF-8. L'auteur original, Ian Back, a écrit mPDF pour générer des fichiers PDF « à la volée » depuis son site Web et gérer différentes langues. Il est plus lent et produit des fichiers plus volumineux lors de l'utilisation de polices Unicode que les scripts originaux comme HTML2FPDF, mais prend en charge les styles CSS, etc. et présente de nombreuses améliorations. Prend en charge presque toutes les langues, y compris RTL (arabe et hébreu) et CJK (chinois, japonais et coréen). Prend en charge les éléments imbriqués au niveau du bloc (tels que P, DIV),

ZendStudio 13.5.1 Mac
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

MantisBT
Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Listes Sec
SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.
