Firestore规则的Firebase身份验证传播时间



Am按顺序调用这些函数(javascript‘firebase’(:

firebase
.auth()
.signInWithEmailLink(email, url)
.then(userCred => {
return firebase.firestore().collection('users').doc('someDocID').get()
....

我在firestore中设置了安全规则,只有当文档中的电子邮件字段等于auth-email:allow get: if request.auth.token.email == resource.data.email

问题是我们在get()上得到了一个丢失或权限不足的错误。当然,数据库中的电子邮件是正确的,所以唯一的问题可能是request.auth.token.email无效。会不会是登录(使用任何登录函数(,即使解析,也不能保证身份验证令牌得到更新并可以立即使用?

有传播时间吗?我们是否应该在登录解析后调用getIdToken(),以确保令牌在进行数据库/firestore调用之前有效?

当用户主动登录(通过调用任何signInWith...方法(时,客户端将获得一个ID令牌,其中包含该用户的最新值。该ID令牌的有效期为一小时,然后由客户端/SDK自动刷新。

因此,在signIn...调用之后,概要文件应该包含最新的值。如果你认为那里出了问题,我建议在调用Firestore之前立即记录这些值。

最新更新