Правила хранения Firebase с использованием флаттера (или Android) - PullRequest
0 голосов
/ 18 июня 2020

Я использую flutter с firebase для сохранения моих изображений, и я использую свое приложение как аутентифицированный пользователь firebase.

Первый вариант использования правил:

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

Здесь для отображения изображений я могу использовать URL-адрес загрузки фотографий, используя:
await ref.getDownloadURL ();
пример: https://firebasestorage.googleapis.com/v0/b/project_name/o/images%2Fimage_name.jpg?alt=media&token=TOKEN Но также я могу использовать прямой URL-адрес фотографии ( без токена ), и он отлично работает. пример: https://firebasestorage.googleapis.com/v0/b/project_name/o/images%2Fimage_name.jpg?alt=media

Второй вариант использования правил:

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

здесь я могу использовать await ref.getDownloadURL ();, но не могу URL-адрес изображения (жестко закодирован)

Мой вопрос:
почему мы используем правила хранения firebase (если request.auth! = null;), если доступен ref.getDownloadURL () даже в частном браузере, и для этого не требуется аутентифицированный пользователь, однако URL-адрес изображения (без токена) недоступен, даже если вы являетесь аутентифицированным пользователем firebase?

1 Ответ

0 голосов
/ 18 июня 2020

Именно так работают URL загрузки. Они предназначены для обхода всех правил безопасности. Правила применяют только код, работающий в веб-приложениях и мобильных приложениях, которые используют Firebase SDK для чтения и записи данных в сегменте хранилища. Если вам не нужен полный доступ publi c к файлу, не используйте URL-адрес загрузки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...