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 }