在Firebase安全规则中将UID用作映射密钥

时间:2020-10-17 20:34:21

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

我正在用Firestore构建一个聊天应用程序,每个聊天室都有一个参与者地图,如下所示:

enter image description here

密钥是用户的相应UID。我想使用此地图来确定哪些用户可以访问聊天。 根据我的安全规则,我目前正在检查此映射中是否存在登录用户的UID,以允许进行读写访问:

allow read, write: if request.auth.uid in resource.data.participants

但这只会检查用户是否在此地图中,而不是检查该值是否真实。我也想检查一下。

我基本上想要的是这样的东西:

allow read, write: if resource.data.participants.request.auth.uid == true

但这实际上不起作用。如何在地图检查中使用当前用户的UID作为密钥?

1 个答案:

答案 0 :(得分:1)

使用方括号通过所需的任何字符串表达式索引到Map

allow read, write: if resource.data.participants[request.auth.uid] == true