Heim > Backend-Entwicklung > Golang > Wie implementiert man routenspezifische Middleware in Negroni?

Wie implementiert man routenspezifische Middleware in Negroni?

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

How to Implement Route-Specific Middleware in Negroni?

Routenspezifische Middleware mit Negroni

Einführung

Die Implementierung von Authentifizierungsmechanismen in Webservern ist entscheidend für die Sicherung von Benutzerdaten und Kontrolle des Zugriffs auf geschützte Ressourcen. Wenn Sie das httprouter-Paket für das Routing und Negroni für die Middleware-Verwaltung verwenden, müssen Sie möglicherweise bestimmte Routen von der Authentifizierung ausschließen. In diesem Artikel wird untersucht, wie man routenspezifische Middleware in Negroni erreicht.

Problemstellung

Bei einem Server-Setup mit httprouter und Negroni besteht das Ziel darin, einen Authentifizierungshandler zu implementieren (authenticator.Get()) und wenden Sie es auf alle Routen außer einer an (z. B. „/login“).

Lösung

Für routenspezifische Middleware mit Negroni müssen wir für jede Route separate Negroni-Instanzen erstellen. Im bereitgestellten Beispiel werden separate Negroni-Instanzen für „/login“ und „/“ erstellt. Die Route „/login“ wird von der Authentifizierung ausgeschlossen, indem nur der loginHandler verwendet wird, während die Route „/“ sowohl Authenticator.Get() als auch den IndexHandler verwendet.

Implementierung

<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

Wichtige Punkte

  • loginHandler und indexHandler müssen die Signatur func(http.ResponseWriter, *http.Request, http.HandlerFunc) implementieren.
  • Alle Routen erben die Middleware von negroni.Classic() und die dem Server hinzugefügte Sitzungs-Middleware.
  • Routenspezifische Middleware wird angewendet, indem Negroni-Instanzen mit unterschiedlichen Middleware-Stacks für jede Route verschachtelt werden.

Das obige ist der detaillierte Inhalt vonWie implementiert man routenspezifische Middleware in 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