如何在 Echo 中向中間件傳遞參數?有一個例子說明了我想要實現的目標。func (h *handlers) Check(pm string, next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { if pm == "test" { return next(c) } return echo.NewHTTPError(http.StatusUnauthorized, "") }}我想這樣設置中間件:route.Use(middleware.Check("test input"))
1 回答

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
您可以使用閉包將參數傳遞給中間件,如下所示:
func (h *handlers) Check(adminName string) echo.MiddlewareFunc {
return func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
if c.QueryParam("username") == adminName {
return next(c)
}
return echo.NewHTTPError(http.StatusUnauthorized, "")
}
}
}
這里中間件檢查查詢參數是否username與中間件參數匹配adminName。在這個例子中,任何人只要知道正確的用戶名就可以獲得管理員狀態,因此沒有安全性。您可能想改用 BasicAuth 或 JWT 中間件,它們已經可用于echo. 看一下echo/middleware/basic_auth.go更好的例子。
您可以按照問題中的方式設置中間件:
route.Use(middleware.Check("admin"))
- 1 回答
- 0 關注
- 138 瀏覽
添加回答
舉報
0/150
提交
取消