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