我正在嘗試使用身份驗(yàn)證中間件來檢查用戶當(dāng)前是否已連接并且在執(zhí)行路由之前是否有會話,但似乎我的中間件并沒有停止路由的執(zhí)行并執(zhí)行下一個路由,即使我沒有調(diào)用下一個()。這是我的代碼:func checkUserAuth(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { if err := next(c); err != nil { c.Error(err) } currSess, _ := session.Get("session", c) if userId, ok := currSess.Values["user_id"].(string); ok { fmt.Println("User is currently connected with id", userId); return next(c) } // Even if middleware reaches here, it still execute the next route, why? return echo.ErrUnauthorized }}func main() { e := echo.New() e.Use(checkUserAuth) e.Use(session.Middleware(store)) e.GET("/", func(c echo.Context) error { sess, _ := session.Get("session", c) fmt.Println("got session" , sess.Values["user_id"], "id", sess.ID) return c.String(http.StatusOK, "Hello") }) e.GET("/session", func(c echo.Context) error { sess, _ := session.Get("session", c) //test sess.Values["user_id"] = rand.Intn(50000) sess.Save(c.Request(), c.Response()) return c.String(http.StatusOK, "session saved") })當(dāng)我向路由發(fā)送 GET 請求時/,中間件會正確執(zhí)行并到達(dá)return echo.ErrUnauthorized語句,但隨后/仍然會執(zhí)行,而且我沒有得到任何 401 狀態(tài)代碼。
Golang Echo - 中間件在不返回下一個時仍在執(zhí)行下一個路由
慕碼人2483693
2022-10-24 16:09:48