向 Echo 路由中间件传递参数
Passing parameters to Echo route middleware
如何给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"))
您可以使用闭包将参数传递给中间件,如下所示:
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"))
如何给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"))
您可以使用闭包将参数传递给中间件,如下所示:
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"))