当前位置: 首页 > 知识库问答 >
问题:

Firestore规则的Firebase auth传播时间?

淳于烈
2023-03-14

我按顺序调用这些函数(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时,才允许读取“users/:docid”

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

共有1个答案

昝欣可
2023-03-14

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

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

 类似资料:
  • 我正在开发一款iOS应用程序,它有(哇,惊喜!)聊天功能。整个应用程序大量使用Firebase工具,对于数据库,我正在使用新的云Firestore解决方案。 目前我正在使用数据库规则加强安全性,但我对自己的数据模型有点挣扎:)这可能意味着我的数据模型选择不当,但我真的很满意,除了实现规则部分。 模型的对话部分如下所示。在我的数据库的根目录下,我有一个集合: 然后我对每个对话都有一个子集合,称为消息

  • null 基本上数据结构如下所示: 问题是,我应该写什么安全规则来允许用户只在他们所属的组中(拥有组密钥)读取、创建和更新数据?同时,如何禁止用户找出其他群组的密钥?

  • 我想检查用户的用户名和电话号码是否唯一。我已经用FirebaseFirestore实现了它。getInstance()。集合(“用户”)。whereEqualTo(“电话”,ph)。get()。addOnCompleteListener(…) 这是我的firestore规则: 代码运行良好,没有问题。我在使用方法和请求之前检查这个。啊。uid将始终为空。要使代码工作,我必须保持

  • 我目前正试图建立一个小型应用程序上的firebase作为它的评估。它看起来很有趣,而且超级高效,但我对firestore规则有一个问题。 我有一个集合(游戏),其对象如下所示: 它没有像预期的那样起作用。我希望它允许我列出的文档,但是如果有一个文档我无法,我希望获得“缺少或不足的权限”。我所能做的是列出所有文档,但不直接读取其中一些文档(规则在试图获取单个文档时有效,但在从集合中列出文档时无效)。

  • 将true更改为request.auth.uid!=null后,它会出现错误: 我可以弄清楚获取用户数据,比如:电子邮件和密码或用户id令牌,如何使用用户数据解决上述错误?