使用Negroni 的特定路由的中間件:可擴充的方法
在使用Negroni 和httprouter 進行Web 開發時,需要有選擇地將中間件應用到各種路線經常出現。為了實現這一目標,有必要了解特定於路由的中間件的概念。
處理多個路由時,對特定路由應用身份驗證檢查,同時排除其他路由會帶來挑戰。當使用 Negroni(一個強大的請求處理框架)時尤其如此。在這種情況下,我們將探索一種可擴展的方法,選擇性地將中間件應用於路由。
實作特定於路由的中間件
為了使用 Negroni 實作特定於路由的中間件,我們可以利用建立多個 Negroni 實例的能力。在提供的範例中,我們在authenticator.Get()中有身份驗證中間件,我們只想將其應用於「/」路由。
<code class="go">router := httprouter.New()</code>
<code class="go">loginHandler := negroni.New(negroni.HandlerFunc(loginHandler)) indexHandler := negroni.New(authenticator.Get(), negroni.HandlerFunc(indexHandler))</code>
<code class="go">router.Handler("GET", "/login", loginHandler) router.Handler("GET", "/", indexHandler)</code>
<code class="go">server := negroni.Classic() server.UseHandler(router) server.Use(sessions.Sessions("example-web-dev", cookiestore.New([]byte("some secret"))))</code>
透過這種方法,我們有效地將身份驗證中間件僅應用於「/」路由。要實現多個公共和私有路由的可擴展性,只需建立單獨的 Negroni 實例並將它們相應地添加到路由器即可。
以上是如何使用 Negroni 實現可擴展的特定於路由的中間件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!