【发布时间】:2018-09-05 21:22:50
【问题描述】:
我希望用户能够创建消息(带有联系表单),但不允许他们阅读或更新。我正在添加一个新的联系人,如下所示:
app.firestore().collection("messages").add({
name: this.state.name,
subject: this.state.subject,
message: this.state.message});
使用以下安全规则是允许的:
match /messages/{message}{
allow read, delete: if request.auth.uid=="<SOME_ID>";
allow create: if true;
}
但是当我添加如下更新规则时,添加新消息时出现权限不足错误。
match /messages/{message}{
allow read, delete, update: if request.auth.uid=="<SOME_ID>";
allow create: if true;
}
如果我将更新规则移到创建下方,这仍然不起作用。但是已经尝试将更新设置为“始终允许/真”,之后添加操作再次起作用。
因此,Firestore 似乎以某种方式查看了更新中最严格的规则并创建了规则,但前提是明确定义了更新规则。我在这里做错了吗?
编辑:
match /messages/{message}{
allow read, delete: if request.auth.uid=="<SOME_ID>";
allow create: if true; allow update: if false }
不会导致权限问题..所以行为似乎特定于我在这里所做的检查类型..
【问题讨论】:
-
这令人困惑。更新规则根本不应该影响您显示的代码,因为它总是会创建一个具有新 ID 的新文档。更新仅适用于现有文档的修改。
-
感谢您的回复,您认为这可能是一个错误吗?或者你对我的设置有什么建议吗?
-
如果你有可靠的复制步骤,你可以提交一个错误。 firebase.google.com/support/contact/bugs-features
-
我找到了解决办法,看答案
标签: firebase google-cloud-firestore firebase-security