【发布时间】:2018-07-20 18:03:56
【问题描述】:
Go 中的 RPC 服务器示例通常看起来像这样(来自https://golang.org/pkg/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)
在传递给注册函数之前,是否可以检查与连接关联的元数据?我想先根据 ACL 检查客户端 IP、API 密钥和请求的函数。
编辑添加:我意识到可以使用l.RemoteAddr() 从侦听器获取远程地址 - 目前尚不清楚我将如何获取 API 密钥和请求的函数。
进入函数后,我可以获取 API 密钥,但不能获取客户端 IP。在函数内部执行它不太理想,因为 ACL 检查样板必须进入每个函数。
【问题讨论】: