是否可以使用Go net/rpc检查元数据?

是否可以使用Go net/rpc检查元数据?,go,rpc,Go,Rpc,Go中的RPC服务器示例通常如下所示(从中): 在将连接传递给注册函数之前,是否可以检查与连接关联的元数据?我想首先对照ACL检查客户端IP、API密钥和请求的函数 编辑添加:我意识到可以通过l.RemoteAddr()从侦听器获取远程地址-不清楚如何获取API密钥和请求的函数 进入函数后,我可以获取API密钥,但不能获取客户端IP。在函数内部执行此操作并不理想,因为ACL检查样板必须包含在每个函数中。遗憾的是,如果不分叉net/rpc并向其添加上下文功能,我已经确定这是不可能的 向注册函数传递

Go中的RPC服务器示例通常如下所示(从中):

在将连接传递给注册函数之前,是否可以检查与连接关联的元数据?我想首先对照ACL检查客户端IP、API密钥和请求的函数

编辑添加:我意识到可以通过
l.RemoteAddr()
从侦听器获取远程地址-不清楚如何获取API密钥和请求的函数


进入函数后,我可以获取API密钥,但不能获取客户端IP。在函数内部执行此操作并不理想,因为ACL检查样板必须包含在每个函数中。

遗憾的是,如果不分叉net/rpc并向其添加上下文功能,我已经确定这是不可能的

向注册函数传递上下文似乎是一个公共特性请求;但是,根据“net/rpc包已冻结,不接受新功能。”

arith := new(Arith)
rpc.Register(arith)
rpc.HandleHTTP()
l, e := net.Listen("tcp", ":1234")
if e != nil {
    log.Fatal("listen error:", e)
}
go http.Serve(l, nil)