我目前正在使用NodeJS,HTML和Firebase编写一个网站,用于数据库服务,身份验证和存储。我目前遇到的问题是Firebase存储规则根据我对文档的解释不起作用。
我的Firebase存储实例的目录结构如下(显然是假的uid):
/
└─ users/
├─ a67dhfa7dhf96/
│ ├─ picture.jpg
│ └─ private/
│ └─ privateDetails.txt
└─ h9dh91hf7edgn/
├─ picture.jpg
└─ private/
└─ privateDetails.txt
我想这样做,以便存储在不同用户文件中的文件可由任何用户读取,无论他们是否经过身份验证,然后使私有文件夹中的文件仅供登录用户使用。我当前的Firebase存储规则如下所示:
service firebase.storage {
match /b/{bucket}/o {
match /users/{userId} {
match /* {
allow read;
}
match /private {
allow read, write: if request.auth != null;
}
}
}
}
根据这些规则,我总是在任何文件上获得403:“权限被拒绝。无法执行此操作”,而不使用Firebase存储提供的自定义下载令牌,无论文件是否在私人目录中。我也尝试了以下规则,每个文件也产生403.
service firebase.storage {
match /b/{bucket}/o {
match /users/{userId}/* {
allow read;
}
match /users/{userId}/private {
allow read, write: if request.auth != null;
}
}
}
为什么这些规则不能像他们那样工作?
答案 0 :(得分:0)
您应该使用wildcards来匹配/users/{userId}/*
。
service firebase.storage {
match /b/{bucket}/o {
match /users/{userId} {
match /{imageId}{
allow read;
}
match /private/{imageId}{
allow read, write: if request.auth != null;
}
}
}
}