Firebase身份验证客户端线程安全吗?

时间:2018-11-03 08:50:40

标签: firebase go firebase-authentication firebase-admin

我在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之间共享firebaseAppfirebase.App)。

我的问题:在goroutine之间共享auth.Client是否安全?还是每当我验证ID令牌时都需要创建一个{{1}}吗?这意味着我将为几乎每个已认证的请求创建一个。对我来说,这似乎代价很高。 我在文档中找不到任何内容。

1 个答案:

答案 0 :(得分:1)

是的,这很安全。

auth.Client旨在在goroutine之间共享并重用。具体来说,VerifyIDToken()函数将在调用之间缓存公共密钥。您应该重用客户端实例以从中受益。 auth.Client在需要时在内部执行自己的锁定/同步(e.g.)。