Transloadit и Firebase
Я занимаюсь разработкой приложения для Angular & Firebase и хочу избежать какой-либо поддержки за пределами Firebase. Документы не рекомендуют хранить изображения в Firebase, поэтому я хотел использовать Trasnloadit для сохранения изображений. Есть ли способ безопасно использовать Transloadit для отправки изображений непосредственно из моего приложения Angular или экземпляра Firebase?
1 ответ
Хотя это старый вопрос, все же стоит изучить возможное решение вашего вопроса. Если вы хотите безопасно отправлять данные с помощью Transloadit, возможно, вы захотите изучить возможность создания подписи . Аутентификация подписи работает в обоих направлениях, поэтому вы можете дважды проверить с помощью Firebase, что источник файла аутентифицирован, однако вам необходимо убедиться, что вы выполняете эту работу на стороне сервера. К счастью, Transloadit упрощает создание подписи:
- Вы хотите создать объект для замены поля параметров в вашей сборке.
{
"auth": {
"key": "23c96d084c744219a2ce156772ec3211",
"expires": "2021/01/31 16:53:14+00:00",
// This could also contain your template ID if you're not defining your steps here
},
"steps": { ... }
}
- Далее вам нужно преобразовать это в JSON, для этого вы можете использовать
JSON.stringify()
| - Теперь, чтобы сделать это шестнадцатеричной подписью HMAC, совместимой с RFC 2104, вы можете использовать библиотеку, такую как CryptoJS.
signature = CryptoJS.HmacSHA256(message, auth_secret).toString(CryptoJS.enc.HEX);
Далее для отправки файла в GCS можно использовать робота /google/store .Так, например, вы можете добавить этот фрагмент в свой шаблон:
"exported": {
"use": [
":original",
...
],
"robot": "/google/store",
"credentials": "YOUR_GOOGLE_CREDENTIALS"
}
Этот робот также обладает свойством
acl
- который определяет разрешения, которые имеет файл. По умолчанию это
public-read
но у вас есть несколько вариантов, включая:
authenticated-read
,
bucket-owner-full-control
,
private
,
project-private
.