在Web 應用程式中實現用戶身份驗證時,通常需要免除某些路由的授權要求。本文探討如何使用 Negroni 和 Httprouter 實現特定於路由的身份驗證。
問題陳述
Web 伺服器使用 Httprouter 和 Negroni,並由 OAuth 處理使用者驗證。令牌儲存在加密會話中,並使用中間件來驗證令牌的存在。但是,某些路由(例如登入頁面)應該繞過此驗證中間件。挑戰在於在不影響可擴展性的情況下從中介軟體中排除特定路由。
解決方案
要建立特定於路由的中間件,關鍵是為每個路由建立單獨的 Negroni 實例路線。這允許對應用於每個端點的中間件進行精細控制。
例如,請考慮以下程式碼片段:
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")
在此範例中,/login 使用單獨的Negroni 實例,而無需身份驗證中間件,而/ 同時應用會話和身份驗證中間件。透過利用多個 Negroni 實例,可以有效且可擴展地實現特定於路由的身份驗證。
以上是如何使用 Httprouter 在 Negroni 中實現特定於路由的身份驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!