Maison >développement back-end >Golang >Comment implémenter l'authentification spécifique à une route 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!