我正在使用 Echo Labstack 框架构建一个 Web API。我的路线中有一个中间件来检查用户身份验证,但后来我在将数据传递给控制器时遇到了困难,并且在 Google 和 SO 中找不到任何相关信息。
路线.go
func Routes(e *echo.Echo) {
e.(middlewareAuthorise)
user := e.Group(“/user”)
user.GET(“/profile”, controllers.UserProfile)
}
func middlewareAuthorise(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
// Do some authentication here with access token and get user ID
auth := controllers.Auth(c, 1)
if auth[“status”] != 200 {
return c.JSON(401, map[string]any{“status”: 401})
}
user_id := auth[“user_id”]
// I want to pass user_id to my controllers
return next(c, user_id)
}
}
controllers.go
func UserProfile(c echo.Context) error {
// I want to get the user_id here from middleware
return c.JSON(200, map[string]any{
“user_id”: user_id,
})
}
我已经搜索并尝试了多种组合一整天,但找不到有效的方法。如何以最有效的方式将参数从中间件传递到我的控制器?
您可以使用上下文的 Set
和Get
方法。
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
学到了
加入交流群
请使用微信扫一扫!