我有一个管理网站,可将文件上传到 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/