我正在查看一些使用autocert和go web服务器的示例代码。
hostPolicy实现是否可以通过动态实现,即从数据库中读取列出的主机(因为它们将不断变化)。
m := autocert.Manager{
Cache: certcache,
Prompt: autocert.AcceptTOS,
HostPolicy: hostPolicy,
}
骨架结构对自定义hostPolicy实现的看法是什么?
https://github.com/golang/crypto/blob/master/acme/autocert/autocert.go#L60
是否有返回功能?
是否必须返回功能?
是的,这是autocert.Manager结构签名的一部分。
Manager.HostPolicy字段是autocert.HostPolicy类型,它实际上是func(ctx context.Context, host string) error
类型的函数。
骨架结构对自定义hostPolicy实现的看法是什么?
您只需为HostPolicy字段设置自定义函数,即可实现查询数据库的逻辑。
m := autocert.Manager{
// ... more fields here
HostPolicy: func(ctx context.Context, host string) error{
// implement database calls here
return nil
},
}
根据文档,您应该返回错误以拒绝主机。