Maison  >  Article  >  développement back-end  >  Comment implémenter des middlewares spécifiques à une route avec Negroni ?

Comment implémenter des middlewares spécifiques à une route avec Negroni ?

DDD
DDDoriginal
2024-10-24 08:33:30335parcourir

How to Implement Route-Specific Middlewares with Negroni?

Middlewares spécifiques à une route avec Negroni : personnalisation de l'authentification

Dans une application Web utilisant httprouter et Negroni, il peut être nécessaire d'appliquer un middleware à des itinéraires spécifiques tout en en excluant d’autres. Par exemple, un middleware d'authentification peut être utilisé pour vérifier l'état de connexion de l'utilisateur, mais cela peut ne pas être nécessaire pour certaines pages.

Negroni offre un moyen polyvalent de gérer un middleware spécifique à un itinéraire. La solution consiste à créer des instances Negroni distinctes pour chaque route où un middleware unique est souhaité.

Dans l'exemple de code fourni, la route /login ne devrait pas nécessiter d'authentification, contrairement à la route /. Voici comment y parvenir :

<code class="go">router := httprouter.New()
router.Handler("GET", "/login", negroni.New(negroni.HandlerFunc(loginHandler)))
router.Handler("GET", "/", negroni.New(authenticator.Get(), negroni.HandlerFunc(indexHandler)))

server := negroni.Classic()
server.UseHandler(router)
server.Use(sessions.Sessions("example-web-dev", cookiestore.New([]byte("some secret"))))
server.Run(":3000")</code>

En créant des instances Negroni distinctes pour chaque route, le développeur peut appliquer différentes chaînes de middleware à différentes parties de l'application. Dans ce cas, la route /login utilisera uniquement le middleware fourni par negroni.Classic() et le middleware de sessions ajouté au serveur, tandis que la route / utilisera en plus le middleware créé dans Authenticator.Get().

LoginHandler et indexHandler doivent suivre une signature de méthode spécifique :

<code class="go">func(http.ResponseWriter, *http.Request, http.HandlerFunc)</code>

Cette approche offre une évolutivité à mesure que l'application se développe et permet une gestion facile des exigences de middleware spécifiques à l'itinéraire.

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