在Go中,AuthFromMD总是希望授权作为标题名称。我怎样才能覆盖它。

时间:2018-03-01 21:43:48

标签: go authorization grpc

我使用github.com/grpc-ecosystem/go-grpc-middleware/util/metautils包来提取标题,看到Link to AuthFromMD implementation我确信我可以覆盖AuthFromMD并拥有自己的标题名称而不是authorization。但结果是var:=metautils.ExtractIncoming(ctx).Get(headerAuthorize)此方法调用始终期望headerAuthorizeauthorization。或者是抛出错误。我的用例是使用不同的HeaderNames,因此我可以使用此方法解析多个Header。有人可以帮助我吗

2 个答案:

答案 0 :(得分:0)

你是正确的AuthFromMD期望标题被命名为authorization。这部分是因为它模仿HTTP header authorization,它总是被命名为相同。

我不确定我是否理解您的用例,但您绝对可以在自己的包中重新实现AuthFromMD并修改它以获取标题名称。

答案 1 :(得分:0)

问题是AuthFromMD在GRPC-Gateway中使用context.Context。所以任何通过网关的grpc请求都会通过这个请求,并且上下文正在删除任何不在此包的上下文中定义的METADATA的头文件。

解决方案将覆盖此问题,并添加任何不从Context

中删除的自定义标头