У меня есть приложение Firebase, которому нужно отправлять изображения размером 64x64 размером менее 15 КБ в мое хранилище Firebase. (Я получил идею об ограничении размера и размера из этого поста: Проверьте ширину и высоту изображения перед загрузкой с помощью Javascript)
Я попытался настроить authKey в javascript, но это не хотел подключаться, он продолжал говорить «Отказано в доступе 403», хотя у меня был ключ к моей системе хранения.
var config = {
apiKey: "643a2fea-f611-42c4-9745-47cea1eb03fc",
authDomain: "typichead.firebaseapp.com/",
databaseURL: "https://typichead.firebaseio.com/",
storageBucket: "typichead.appspot.com"
};
(все эти ключи уже явно отозваны и изменены)
Таким образом, я установил правило с != auth
на == auth
, чтобы любой и все могли читать и записывать в систему хранения.
Хотя это обеспечивает такую большую безопасность.
Редактировать: Я удалил и изменил правила обратно на приватные, потому что я публиковал это публично ... не могу, чтобы люди рассылали спам в моем ограниченном хранилище, могу я
Я хочу изменить его поэтому он может отправлять / получать только из ОДНОГО URL: https://typichead.web.app
Я не знаю, как работают "правила" в хранилище баз данных
Вот мой текущий список баз данных правила хранения:
rules_version = '2';
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read, write: if request.auth == null;
}
}
}
Используя этот скрипт, который принимает Исходный файл ввода и определяет его ширину / высоту изображения, я могу вырезать изображения, которые не имеют правильного размера или типа файла.
, используя let uuid
, он случайным образом захватывает uuid и использует его для именования файла и отправить его в мое хранилище Firebase, используя строковые литералы user/${uuid}.png
if (img.width == "64" && img.height == "64") {
let uuid = createUUID();
let storageRef = firebase.storage().ref(`user/${uuid}.png`);
storageRef.put(file);
} else {
alert("Only 64x64 images are allowed!");
}
Весь исходный код рабочей страницы: https://github.com/FunctFlow/Minecraft-HeadLoader/blob/master/public/index.html