【问题标题】:firebase firestore security rules without authed user没有经过身份验证的用户的 firebase firestore 安全规则
【发布时间】:2021-11-28 16:10:14
【问题描述】:

我正在使用 firebase 和 firestore 数据库开发一个简单的电子商务网站。 每当客户购买产品时,我想使用触发电子邮件功能触发电子邮件,并将销售详细信息保存在另一个 Firestore 数据库中。

“如果为真”firestore 安全规则一切正常,但现在我已经部署,我的规则不断更改为

allow create: if request.auth.uid == request.resource.data.author_uid;
allow update, delete: if request.auth.uid == resource.data.author_uid;

由于缺少权限或权限不足,我的所有数据库写入都失败了。

据我了解,这意味着除非授权用户登录,否则不允许写入数据库。

我不希望客户必须注册和登录才能从该网站购买。 没有人登录时如何进行数据库写入?

我尝试过使用匿名用户,但我并不完全理解规则文档。

不确定它是否相关,但我使用的是 vue.js,并且该网站也是由 firebase 托管的。

【问题讨论】:

  • "我的规则不断更改为" 这可能意味着您有一个在运行 firebase deploy 时部署的 firestore.rules 文件。如果这是原因,您可以从 firebase.json 文件中删除对该规则文件的引用。
  • "我尝试过使用匿名用户" 对于您希望在不要求用户输入凭据的情况下保护每个数据的访问权限的站点,这是正确的方法。如果您无法正常工作,我建议您编辑您的问题以显示minimal code+rules that allow any of us to reproduce the problem
  • 非常感谢您的帮助,弗兰克。我认为是 Firebase 本身改变了我的规则!傻我!今天玩了很多规则之后,一切似乎都运行良好。 :) Firebase 规则正常
  • 哈哈。很高兴听到你得到它的工作米奇! ???我把它写成了一个带有一些额外信息的快速答案,所以我们可以结束这个问题。

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


【解决方案1】:

“我的规则不断改变”

这可能意味着您有一个firestore.rules 文件,当您运行firebase deploy 时该文件会被部署。如果这是原因,您可以从 firebase.json 文件中删除对该规则文件的引用。

正如updating and deploying your security rules through the Firebase command-line interface 上的文档所述:

注意:使用 Firebase CLI 部署安全规则时,项目目录中定义的规则会覆盖 Firebase 控制台中的所有现有规则。因此,如果您选择使用 Firebase 控制台定义或编辑安全规则,请确保您还更新了项目目录中定义的规则。

【讨论】:

    猜你喜欢
    • 2021-07-05
    • 2021-07-23
    • 1970-01-01
    • 2019-06-15
    • 1970-01-01
    • 2021-07-07
    • 2020-08-06
    • 1970-01-01
    相关资源
    最近更新 更多