1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| package middleware
|
| import (
| "context"
| "google.golang.org/grpc"
| "google.golang.org/grpc/metadata"
| )
|
| // HeaderInterceptor 拦截器函数
| func HeaderInterceptor(ctx context.Context, method string, req, reply interface{}, cc *grpc.ClientConn, invoker grpc.UnaryInvoker, opts ...grpc.CallOption) error {
| token := ctx.Value("token")
| if token != nil {
| // 创建一个自定义的 metadata
| md := metadata.Pairs("token", token.(string))
| // 将 metadata 添加到 context 中
| ctx = metadata.NewOutgoingContext(ctx, md)
| }
| // 调用实际的 gRPC 方法
| err := invoker(ctx, method, req, reply, cc, opts...)
| return err
| }
|
|