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