我正在使用 https://github.com/firebase/firebase-admin-go在我的 Go 服务器应用程序中。
查看文档后,我每次检查 ID token 时都会创建 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 token 时都创建一个?这意味着我将为几乎每个经过身份验证的请求创建一个。这对我来说似乎很昂贵。
我在文档中找不到任何相关信息。
最佳答案
是的,它是 goroutine 安全的。
auth.Client
旨在在 goroutine 之间共享和重用。具体来说,VerifyIDToken()
函数将在调用之间缓存公钥。您应该重用客户端实例以从中受益。 auth.Client
在需要时在内部执行自己的锁定/同步 (e.g.)。
关于firebase - Firebase 身份验证客户端线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53129782/