Maison  >  Article  >  développement back-end  >  Comment implémenter l'authentification spécifique à une route dans Negroni avec Httprouter ?

Comment implémenter l'authentification spécifique à une route dans Negroni avec Httprouter ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-24 08:39:42326parcourir

How to Implement Route-Specific Authentication in Negroni with Httprouter?

Authentification spécifique à un itinéraire dans Negroni avec Httprouter

Lors de la mise en œuvre de l'authentification des utilisateurs dans une application Web, il est souvent nécessaire d'exempter certains itinéraires de l'obligation d'autorisation. Cet article explique comment réaliser une authentification spécifique à une route à l'aide de Negroni avec Httprouter.

Énoncé du problème

Un serveur Web utilise Httprouter et Negroni, l'authentification utilisateur étant gérée par OAuth. Le jeton est stocké dans une session cryptée et un middleware est utilisé pour vérifier l'existence du jeton. Cependant, certaines routes, comme la page de connexion, devraient contourner ce middleware d'authentification. Le défi réside dans l'exclusion de routes spécifiques du middleware sans compromettre l'évolutivité.

Solution

Pour créer un middleware spécifique à une route, la clé est de créer des instances Negroni distinctes pour chaque itinéraire. Cela permet un contrôle granulaire sur les middlewares qui s'appliquent à chaque point de terminaison.

Par exemple, considérons l'extrait de code suivant :

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")

Dans cet exemple, /login utilise une instance Negroni distincte sans le middleware d'authentification, tandis que / applique à la fois les sessions et les middlewares d'authentification. En utilisant plusieurs instances Negroni, une authentification spécifique à un itinéraire peut être réalisée de manière efficace et évolutive.

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