gpt4 book ai didi

go - 向 Echo 路由中间件传递参数

转载 作者:行者123 更新时间:2023-12-01 19:54:26 25 4
gpt4 key购买 nike

如何在 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"))

关于go - 向 Echo 路由中间件传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58213600/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com