为了账号安全,请及时绑定邮箱和手机立即绑定

向 Echo 路由中间件传递参数

向 Echo 路由中间件传递参数

Go
紫衣仙女 2023-07-26 17:44:31
如何在 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 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

您可以使用闭包将参数传递给中间件,如下所示:


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"))


查看完整回答
反对 回复 2023-07-26
  • 1 回答
  • 0 关注
  • 105 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信