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

标签 go middleware go-echo

如何在 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/

相关文章:

ajax - 如何在golang中以标准方式从http请求中获取数据?

ruby-on-rails - 在 Middleware Localhost 中获取客户端 IP

java - 使用传输监听器可以检测到代理或网络的哪些问题?

go - labstack/echo 中参数后的静态 URL 路径是否有效

go - echo框架,在哪一刻降级权限?

go - 如何覆盖 DefaultHTTPErrorHandler 格式消息

戈朗 : Why the following code does NOT panic with "slice index out of range" error

go - swagger go 中有效 POST 的示例代码

go - 在 golang 模块功能中本地安装包

javascript - 扩展尚未创建的 javascript (nodeJS) 对象