如何在Go中访问特定于请求的数据?
我有一个用go编写的API,我正在使用gingonic框架来实现我的端点。我的项目遵循干净的体系结构,这意味着我的整个应用程序分为多个层,即控制器、服务、存储库和会话。端点由auth0保护,验证在gin中间件中执行。在中间件中,我可以从JWT中提取主题(在标题中设置) 现在,我的问题是。我想在查询中使用此主题值。我想知道是否可以将主题(sub)存储在上下文中,并在代码的其他部分中使用它,而无需传递上下文。这可能吗?或者我只需要更新所有函数并向所有下游调用添加一个新参数“Sub”如何在Go中访问特定于请求的数据?,go,go-gin,Go,Go Gin,我有一个用go编写的API,我正在使用gingonic框架来实现我的端点。我的项目遵循干净的体系结构,这意味着我的整个应用程序分为多个层,即控制器、服务、存储库和会话。端点由auth0保护,验证在gin中间件中执行。在中间件中,我可以从JWT中提取主题(在标题中设置) 现在,我的问题是。我想在查询中使用此主题值。我想知道是否可以将主题(sub)存储在上下文中,并在代码的其他部分中使用它,而无需传递上下文。这可能吗?或者我只需要更新所有函数并向所有下游调用添加一个新参数“Sub” 我指的是使用一个
我指的是使用一个排序的全局变量来访问特定于请求的数据(来自JWT令牌的SUB)。我知道这是一种糟糕的做法——我只是想知道除了传递特定于请求的数据之外,是否还有其他方法来实现这一点?感谢您的帮助。这确实是上下文的全部要点——它的存在是为了保存这些类型的东西,并在链中传递。这一点很重要,因为您希望将其范围限制在请求上——如果您开始使用globals,您可能会遇到一些问题,因为多个请求正在处理相同的数据,从而导致争用。同样,如果令牌在请求之间无效
如果您的身份验证中间件在查询之前运行(听起来像是这样),那么只需让它以您满意的方式将主题放到上下文中即可。同意。我想我会这么做的。只是我必须将上下文作为参数添加到所有下游函数调用中。我想知道是否有办法忽略这一点。似乎没有,我们必须传递上下文。谷歌也鼓励开发者这样做。