Firebase 存储安全规则游乐场 "Simulated read denied"

Firebase Storage security rules playground "Simulated read denied"

我希望我的用户只能读写他自己的数据但是。当我测试规则时,我收到消息“模拟器读取被拒绝”。请告诉我哪里错了?感谢您的宝贵时间。

这里是一些信息:

规则

service firebase.storage {
  // Only a user can upload their file, but anyone can view it
  match /users/{userId}/{fileName} {
    allow read ;
    allow write: if request.auth != null && request.auth.uid == userId;
  }
}

位置

/b/online-notepad-d43d2.appspot.com/o/WkqtgpdUYRUGOBaAfmCByXtVPoT2/file1.txt

提供商

"password"

FIREBASE UID

WkqtgpdUYRUGOBaAfmCByXtVPoT2

电子邮件

hgaur701@gmail.com

电子邮件已验证

true

身份验证负载

{
  "uid": "WkqtgpdUYRUGOBaAfmCByXtVPoT2",
  "token": {
    "sub": "WkqtgpdUYRUGOBaAfmCByXtVPoT2",
    "aud": "online-notepad-d43d2",
    "email": "hgaur701@gmail.com",
    "email_verified": true,
    "firebase": {
      "sign_in_provider": "password"
    }
  }
}

屏幕截图

我正在使用的确切位置:“/WkqtgpdUYRUGOBaAfmCByXtVPoT2/file1.txt” 还有一件事我从上传按钮上传了这个文件夹和文件。 不是来自 POST 请求。

仍然得到相同的结果:(

这里定义了两个完全独立的子句:

allow read ;
allow write: if request.auth != null && request.auth.uid == userId;

所以你有一个空的读子句和一个非空的写子句。

您可能想使用:

allow read, write: if request.auth != null && request.auth.uid == userId;

编辑第二个问题:正如您在编辑中所说,您正在访问路径 /WkqtgpdUYRUGOBaAfmCByXtVPoT2/file1.txt,但您的规则只定义了 [=13= 的访问权限].由于您只允许在 /users/... 中访问,而您尝试使用的路径不在 /users 中,因此规则拒绝访问。