Firebase 安全规则中的Request.auth.metadata?

Firebase 安全规则中的Request.auth.metadata?,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,我有一个Firebase项目,我希望用户能够看到其他用户何时创建他们的配置文件。我最初的希望是,我可以在前端使用“user.metadata.creationTime”将日期传递到用户的额外信息文档中,并通过将“request.resource.data.datecreated==request.auth.metadata.creationTime”作为数据库规则来验证它是否正确,但根据上下文,这似乎是不可能的 是否有任何方法可以验证后端的创建日期是否正确 更多信息编辑:以下是用户在我的个人资料

我有一个Firebase项目,我希望用户能够看到其他用户何时创建他们的配置文件。我最初的希望是,我可以在前端使用“user.metadata.creationTime”将日期传递到用户的额外信息文档中,并通过将“request.resource.data.datecreated==request.auth.metadata.creationTime”作为数据库规则来验证它是否正确,但根据上下文,这似乎是不可能的

是否有任何方法可以验证后端的创建日期是否正确

更多信息编辑:以下是用户在我的个人资料上创建新帐户时触发的代码。这三个值将公开显示。我正在创建一个利基gear for sale页面,以便能够看到用户何时首次创建他们的帐户,这可能有助于确定卖家是否粗略。我不希望有人能让人觉得他们已经存在了很久

    db.collection('users').doc(user.uid).set({
        username: "Username-156135",
        bio: "Add a bio",
        created: user.metadata.creationTime
    });
Firestore规则:

 match /users/{id} {
  allow get;
  allow create, update: if request.resource.data.username is string &&
    request.resource.data.bio is string &&
    request.resource.data.created == request.auth.metadata.creationTime;
}

user.metadata.creationTime
,根据,是一个没有文档格式的字符串。我建议不要用它。事实上,您试图做的似乎是不可能的,因为该值在中不可用


我建议您改为使用with Cloud函数,以当前时间作为适当的时间戳自动创建该文档。然后,在安全规则中,我甚至不会给用户更改该字段的能力,因此您可以确定它只能由触发器精确设置。您可能对.

user.metadata.creationTime
感兴趣,因为它是一个没有文档格式的字符串。我建议不要用它。事实上,您试图做的似乎是不可能的,因为该值在中不可用


我建议您改为使用with Cloud函数,以当前时间作为适当的时间戳自动创建该文档。然后,在安全规则中,我甚至不会给用户更改该字段的能力,因此您可以确定它只能由触发器精确设置。您可能会感兴趣。

您是否可以编辑此问题,以便更清楚地了解您想要实现的目标?我不能确切地说你要检查的是什么情况,也不能说是在什么情况下。我建议同时显示规则和客户机代码,但它们的工作方式与您期望的不同。如果没有允许或拒绝的客户端代码,规则将毫无意义。添加了详细信息!你能编辑这个问题以便更清楚地了解你想要达到的目标吗?我不能确切地说你要检查的是什么情况,也不能说是在什么情况下。我建议同时显示规则和客户机代码,但它们的工作方式与您期望的不同。如果没有允许或拒绝的客户端代码,规则将毫无意义。添加了详细信息!