Heim  >  Artikel  >  Backend-Entwicklung  >  Wie implementiert man routenspezifische Middlewares mit Negroni?

Wie implementiert man routenspezifische Middlewares mit Negroni?

DDD
DDDOriginal
2024-10-24 08:33:30335Durchsuche

How to Implement Route-Specific Middlewares with Negroni?

Routenspezifische Middlewares mit Negroni: Authentifizierung anpassen

In einer Webanwendung, die httprouter und Negroni verwendet, kann es erforderlich sein, Middleware anzuwenden auf bestimmte Routen, während andere ausgeschlossen werden. Beispielsweise kann Authentifizierungs-Middleware verwendet werden, um den Anmeldestatus des Benutzers zu überprüfen, für bestimmte Seiten ist dies jedoch möglicherweise nicht erforderlich.

Negroni bietet eine vielseitige Möglichkeit, mit routenspezifischer Middleware umzugehen. Die Lösung besteht darin, separate Negroni-Instanzen für jede Route zu erstellen, für die eine eindeutige Middleware gewünscht wird.

Im bereitgestellten Beispielcode sollte die /login-Route keine Authentifizierung erfordern, während die /-Route dies tun sollte. So erreichen Sie dies:

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

Durch die Erstellung separater Negroni-Instanzen für jede Route kann der Entwickler unterschiedliche Middleware-Ketten auf verschiedene Teile der Anwendung anwenden. In diesem Fall verwendet die /login-Route nur die von negroni.Classic() bereitgestellte Middleware und die dem Server hinzugefügte Sitzungs-Middleware, während die /-Route zusätzlich die in Authenticator.Get() erstellte Middleware verwendet.

Sowohl loginHandler als auch indexHandler müssen einer bestimmten Methodensignatur folgen:

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

Dieser Ansatz bietet Skalierbarkeit, wenn die Anwendung wächst, und ermöglicht eine einfache Verwaltung routenspezifischer Middleware-Anforderungen.

Das obige ist der detaillierte Inhalt vonWie implementiert man routenspezifische Middlewares mit Negroni?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn