0

我正在开发一个 Angular 和 Firebase 应用程序,我想避免在 Firebase 之外使用任何后端。文档不建议在 Firebase 中存储图片,所以我想使用 Trasnloadit 来保存图片。有没有办法安全地使用 Transloadit 直接从我的 Angular 应用程序或 Firebase 实例发送图像?

4

1 回答 1

0

虽然这是一个老问题,但仍然值得探索可能的解决方案来解决您的问题。如果您希望使用 Transloadit 安全地发送数据,您可能需要考虑创建签名。签名身份验证双向工作 - 因此您可以使用 Firebase 仔细检查文件的来源是否经过身份验证,但是您需要确保执行此服务器端。幸运的是,Transloadit 使生成签名变得简单:

  1. 您想制作一个对象来替换程序集中的 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": { ... }
}
  1. 接下来,您需要将其转换为 JSON,为此您可以使用JSON.stringify()|
  2. 现在,要使其成为符合 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 回答