Передача параметров промежуточному программному обеспечению Echo route
Как передать параметр промежуточному программному обеспечению в 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 ответ
Вы можете использовать закрытие, чтобы передать свой параметр промежуточному программному обеспечению, например:
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"))