首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cloud Firestore安全规则“如果存在”不起作用

Cloud Firestore安全规则“如果存在”不起作用
EN

Stack Overflow用户
提问于 2019-05-10 07:31:41
回答 1查看 612关注 0票数 1

我在Cloud Firestore上有一个简单的聊天应用程序,它有以下安全规则,只允许用户在应用程序中“加入”聊天室时才能在聊天室中发送消息:

代码语言:javascript
运行
复制
match /hangouts/{hangout}/messages/{message} {
        allow create, write, update, read: if exists(/databases/$(database)/documents/users/{userId}/hangout/{hangout});
    }

如果用户在Firestore上的集合中有一个hangoutID,那么他们应该被允许向该hangoutID发送消息。但是,我仍然收到错误消息:

代码语言:javascript
运行
复制
Write at hangouts/ChIJPRVm2R7H54kRKLP2ttsuUko/messages/17225E70-B708-4033-AE5A-D0CBBD1BC69F failed: Missing or insufficient permissions.

我还有另外两条与闲逛有关的规则。有没有可能这些都是干扰?

代码语言:javascript
运行
复制
match /hangouts/{hangout} {
    allow read, update, write, create: if request.auth.uid != null;
}

match /hangouts/{hangout}/members/{userId} {
    allow read: if request.auth.uid != null;
  allow create, update, write, delete: if request.auth.uid == userId;
}

第一个是人们可以创建和查看聊天室,第二个是允许人们加入聊天室。

我做错了什么?我对这个概念还不是很熟悉。

谢谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-10 07:54:25

看起来您没有正确地对文档路径进行变量替换。在匹配部分,您使用{花括号}来指示通配符的位置,但在路径表达式中,您使用通配符的名称,如$(this)。

代码语言:javascript
运行
复制
/databases/$(database)/documents/users/$(userId)/hangout/$(hangout)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56068834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档