我在Go服务器应用程序中使用https://github.com/firebase/firebase-admin-go。
查看文档后,每次检查ID令牌时,我都会创建auth.Client。例如:
client, err := firebaseApp.Auth(ctx)
if err != nil {
return "", err
}
token, err := client.VerifyIDToken(ctx, idToken)
if err != nil {
return "", err
}
我已经在goroutine之间共享firebaseApp
(firebase.App
)。
我的问题:在goroutine之间共享auth.Client
是否安全?还是每当我验证ID令牌时都需要创建一个{{1}}吗?这意味着我将为几乎每个已认证的请求创建一个。对我来说,这似乎代价很高。
我在文档中找不到任何内容。
答案 0 :(得分:1)
是的,这很安全。
auth.Client
旨在在goroutine之间共享并重用。具体来说,VerifyIDToken()
函数将在调用之间缓存公共密钥。您应该重用客户端实例以从中受益。 auth.Client
在需要时在内部执行自己的锁定/同步(e.g.)。