Wie implementiert man routenspezifische Middlewares mit Negroni?

DDD
Freigeben: 2024-10-24 08:33:30
Original
330 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!