如何在 Go 中访问请求特定数据?

How to access Request Specific Data in Go?

我有一个用 go 编写的 API,我正在使用 gin-gonic 框架来实现我的端点。我的项目遵循干净的架构,这意味着我的整个应用程序分为多个层,即控制器、服务、存储库和 Session。端点由 auth0 保护,验证在 gin 中间件中执行。在中间件中,我可以从 JWT 中提取主题(在 header 中设置)

现在,这是我的问题。我想在我的查询中使用这个主题值。我想知道我是否可以将主题(子)存储在上下文中并在代码的其他部分中使用它而不传递上下文。这可能吗?或者我是否只需要更新我的所有函数并向所有下游调用添加一个新参数 "Sub"?

我指的是使用某种全局变量来访问请求特定数据(来自 JWT 令牌的 SUB)。我知道这是一种不好的做法——我只是想知道除了传递请求特定数据之外是否还有其他方法可以做到这一点?感谢您的帮助。

它确实是上下文的全部要点 - 它的存在是为了保存这些东西并在链中传递。这很重要,因为您希望将其限制在请求范围内——如果您开始使用全局变量,您可能 运行 陷入争用的问题,因为多个请求正在处理相同的数据。同样,如果令牌在请求之间无效。

如果您的身份验证中间件 运行 在您的查询之前(听起来确实如此),那么只需让它以您满意的方式将主题放入上下文中即可.