如何将参数从中间件传递到控制器

2024年 2月 13日 85.7k 0

如何将参数从中间件传递到控制器

php小编百草为您介绍如何将参数从中间件传递到控制器。在开发过程中,我们经常需要在中间件中获取一些参数,然后将这些参数传递给控制器进行后续处理。要实现这个功能,我们可以通过在中间件中使用$request对象的with方法来将参数传递给控制器。首先,我们需要在中间件中获取参数,然后使用$request对象的with方法将参数添加到请求对象中,最后在控制器中通过$request对象的input方法获取这些参数即可。这样,我们就成功地将参数从中间件传递到控制器了。这种方法简单易行,能够满足我们的需求。希望这个方法对您有所帮助!

问题内容

我正在使用 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,
})
}

登录后复制

我已经搜索并尝试了多种组合一整天,但找不到有效的方法。如何以最有效的方式将参数从中间件传递到我的控制器?

解决方法

您可以使用上下文的 SetGet 方法。

以上就是如何将参数从中间件传递到控制器的详细内容,更多请关注每日运维网(www.mryunwei.com)其它相关文章!

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论