Firebase 身份验证客户端线程安全吗?
Is the Firebase auth client thread safe?
我在我的 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 令牌时创建一个?这意味着我将为几乎每个经过身份验证的请求创建一个。这对我来说似乎很昂贵。
我在文档中找不到任何相关信息。
是的,它是 goroutine 安全的。
auth.Client
旨在在 goroutine 之间共享并重用。具体来说,VerifyIDToken()
函数将在调用之间缓存 public 键。您应该重用客户端实例以从中受益。 auth.Client
在需要时在内部执行自己的 locking/synchronization (e.g.)。
我在我的 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 令牌时创建一个?这意味着我将为几乎每个经过身份验证的请求创建一个。这对我来说似乎很昂贵。
我在文档中找不到任何相关信息。
是的,它是 goroutine 安全的。
auth.Client
旨在在 goroutine 之间共享并重用。具体来说,VerifyIDToken()
函数将在调用之间缓存 public 键。您应该重用客户端实例以从中受益。 auth.Client
在需要时在内部执行自己的 locking/synchronization (e.g.)。