我正在开发一个 Angular 和 Firebase 应用程序,我想避免在 Firebase 之外使用任何后端。文档不建议在 Firebase 中存储图片,所以我想使用 Trasnloadit 来保存图片。有没有办法安全地使用 Transloadit 直接从我的 Angular 应用程序或 Firebase 实例发送图像?
问问题
179 次
1 回答
0
虽然这是一个老问题,但仍然值得探索可能的解决方案来解决您的问题。如果您希望使用 Transloadit 安全地发送数据,您可能需要考虑创建签名。签名身份验证双向工作 - 因此您可以使用 Firebase 仔细检查文件的来源是否经过身份验证,但是您需要确保执行此服务器端。幸运的是,Transloadit 使生成签名变得简单:
- 您想制作一个对象来替换程序集中的 params 字段
{
"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()
| - 现在,要使其成为符合 RFC 2104 的 HMAC 十六进制签名 - 您可以使用 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
.
于 2021-03-02T15:36:08.763 回答