【问题标题】:How can i Allow user to modify Own Files only Firebase Storage?我如何允许用户仅修改自己的文件 Firebase 存储?
【发布时间】:2020-10-18 11:55:34
【问题描述】:

我正在使用 Firebase 存储来存储用户的文件。我的存储结构如下图。我想只允许创建的文件用户修改他的文件而不是其他人。

profiles/uid/posts

posts/ 文件夹包含他所有上传的文件。我想限制其他用户修改此路径文件。他们可以在 profiles/uid/posts 这个路径之间看到我的所有文件。我目前的规则是:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

帮助我实现这一目标。谢谢

【问题讨论】:

    标签: firebase firebase-storage firebase-security


    【解决方案1】:

    像这样识别每个 UID 文件夹:

    rules_version = '2';
    service firebase.storage {
      match /b/{bucket}/o {
        match /profiles/{uid}/posts/{allPaths=**} {
          allow read, write: if request.auth.uid == uid;
        }
      }
    }
    

    我强烈建议阅读documentation 中有关每用户身份验证规则的更多信息。

    【讨论】:

    • 无法理解此文档。实时数据库规则是可观的。非常感谢
    • 我发现了错误。我无法根据此规则上传我的文件。但可以看到所有文件。有什么问题?
    • @SophiaGray 我猜它应该是allow read, write: if request.auth.uid == uid; 当 request.auth.uid 等于 {uid} 时允许。不应为 !=,这意味着如果 UID 不匹配,则允许该过程
    • @Dharmaraj 谢谢。有用。你能告诉我 /b/{bucket}/o 和 {allPaths=**} 的目的是什么吗?
    • @SophiaGray ${uid} 是一个通配符.... 表示它的值是可变的而不是恒定的,您可以像 Doug 在他的回答中那样比较它。 {allPaths=**} 表示规则适用于该路径内的所有内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    • 2019-11-12
    • 2021-04-27
    • 1970-01-01
    相关资源
    最近更新 更多