Firebase Storage, Каковы надлежащие правила для загрузки / удаления на основе пользователя?
Я хочу создать пользовательскую безопасность для Firebase/Storage. Ниже разрешить запись работает хорошо, если я загружаю только изображения. Но это мешает удалить фото. Как я могу создать правильное правило безопасности для этого случая?
service firebase.storage {
match /b/<bucket>/o {
match /{allPaths=**} {
allow read: if request.auth != null;
}
match /users/{uid}/{filename} {
allow write: if isCurrentUser(uid);
allow write: if isImage() &&
isCurrentUser(uid) &&
lessThanNMegabytes(n) &&
request.resource !=null &&
filename.size() < 50;
}
}
}
function isCurrentUser(uid) {
return request.auth.uid == uid;
}
function lessThanNMegabytes(n) {
return request.resource.size < n * 1024 * 1024;
}
function isImage() {
return request.resource.contentType.matches("image/.*");
}
1 ответ
Решение
Я хотел бы использовать это, чтобы проверить, если вы создаете / обновляете файл или удаляете его
match /users/{uid}/{filename} {
allow write: if isCurrentUser(uid);
allow write: if resource == null ||
( isImage() &&
lessThanNMegabytes(n) &&
request.resource !=null &&
filename.size() < 50 );
}