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

时间:2020-02-19 22:33:35

标签: firebase google-cloud-firestore firebase-security

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

有什么办法可以验证后端的创建日期正确吗?

更多信息编辑:以下是用户在我的个人资料上创建新帐户时触发的代码。这三个值将公开显示。我正在创建一个用于销售的利基装备页面,因此在确定卖方是否粗略时,能够查看用户首次创建其帐户的时间可能会有所帮助。我不希望有人能够使他们看起来比他们待的时间更长。

extent

Firestore规则:

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

1 个答案:

答案 0 :(得分:1)

根据{{​​3}},

SELECT value FROM counters WHERE counterID = 'inventory_record'是没有文档格式的字符串。我建议不要使用它。实际上,您试图做的事情似乎是不可能的,因为API documentation中没有该值。

我建议您改为使用API documentation for request.auth和Cloud Functions来自动创建带有当前时间的文档作为适当的时间戳。然后,在安全规则中,我什至不给用户更改该字段的能力,因此您可以确保触发器仅能准确设置该字段。您可能对Firebase Auth onCreate trigger感兴趣。