node.js - Firebase Cloud Functions - 如何获取上传文件的用户?

标签 node.js firebase google-cloud-functions firebase-storage

我有一个管理网站,可将文件上传到 Firebase 存储中的特定文件夹。

从存储云功能中,我需要从上传文件的用户处获取经过身份验证的用户 ID。我需要这个,因为当用户上传文件时,云功能启动,执行一些处理,并将信息保存在实时数据库中,我需要在其中保存上传操作的负责用户。

我发现从实时数据库云函数获取用户很简单(使用 context.auth.uid),但我没有找到任何类似的存储云函数解决方案。

可能吗?

谢谢。

最佳答案

我想我会提供工作代码,因为 Ali Abbas 的答案并不完全正确。

在上传过程中向文件添加自定义元数据。您必须使用customMetadata string>字符串对象,如下所示。

firebase.storage().ref("/location/path").put(file, {customMetadata: {'uid': firebase.auth().currentUser.uid}})

接下来,我们需要验证所有上传的文件是否包含此元数据并且其准确性。这是一个有效的存储安全规则:

allow write: if request.resource.metadata.uid == request.auth.uid

最后,从云函数中,以下代码将返回从文件元数据中获取的 uid:

object.metadata.uid

您可以确定这是上传文件的人的 uid,因为如果没有它,他们就无法上传,除非您使用 Admin SDK。

关于node.js - Firebase Cloud Functions - 如何获取上传文件的用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53723687/

相关文章:

firebase - 如何获取云函数 onCreate 触发文档 ID

firebase - 如何将 Firebase Cloud Functions 日志导出到文件?

javascript - 如何将 Socket.IO-Client 连接到 Sails.js 服务器?

javascript - Meteor 中未捕获的类型错误

javascript - 如何使排序表与 Firebase 中的 Angular 8 + 数据一起使用?

swift - 如果缓存数据已过时,是否可以只从 Firebase 下载数据?

ios - 如何在 Firebase 中创建自动递增键?

javascript - Busboy不会收到上传的文件

android - 无法通过 Azure 移动服务发送推送通知

node.js - Firebase 错误 : function terminated. 建议的操作:检查日志以了解终止原因