问题大概是这样的,有一个链式的grpc流式拦截器。如下图:
其中执行到GrpcJWTAuthToken这个拦截器的时候。会判断客户端传过来的metedata中的Authorization空格后面的token是否合法。
如果合法,就可以找到响应的用户,然后将用户的信息放到metedata里面.
然后调用下面的handler方法,执行下一个拦截器。
然后就会走到流量统计拦截器,这个时候获取metedata的租户,却获取不到了。
下面上一下debug的图。
我自己试了一下,感觉是因为就算metedata进行了set,但是对执行器链的context没有改变,所以执行到下一个拦截器。
还是用的没set的context,但是不知道如果修改context。
可以得到context。
但是context是开头小写,我无法修改,
我该怎么办? 求大佬解答。
有疑问加站长微信联系(非本文作者)

这个不是bug
FromIncomingContext返回的是个新对象,也就是说修改md无效,需要重新setHeader
我setHeader也试过了,debug的时候还是不行啊,大哥能不能加个q详谈一下。
grpc了解不深,之前随便猜测了下 我看了下源码,流拦截器之间没有接口可以传递数据,只能使用其他的方式,redis/beego的cache/或者自己实现
找到公司的大佬解决了,包装一下context即可。