簡介
在Web 伺服器中實現身分驗證機制對於保護使用者資料和安全至關重要控制對受保護資源的存取。當使用 httprouter 套件進行路由並使用 Negroni 進行中間件管理時,您可能會遇到需要從驗證中排除特定路由的情況。本文探討如何在 Negroni 中實作特定於路由的中間件。
問題陳述
給定一個使用httprouter 和Negroni 的伺服器設置,目標是實現一個身份驗證處理程序(authenticator.Get()) 並將其應用於除一個路由之外的所有路由(例如“/login”)。
解決方案
針對 Negroni 的特定於路由的中間件,我們需要為每條路線建立單獨的 Negroni 實例。在提供的範例中,為“/login”和“/”建立單獨的 Negroni 實例。僅使用 loginHandler 將「/login」路由排除在身份驗證之外,而「/」路由同時使用authenticator.Get() 和indexHandler。
實作
<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>
要點
以上是如何在 Negroni 中實作特定於路由的中間件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!