在Finalize中的Firebase函数中获取uid,以存储Firebase

我使用firebase JS sdk将音频文件上传到firebase-storage。发生这种情况时,我需要根据经过身份验证的用户进行上传进行处理(我将其上传到其他地方进行处理)。这意味着我需要通过存储规则验证后才能访问uid,以确保其安全。

在研究此问题时,我发现了诸如using the metadata to send the user's ID token之类的变通方法,但我认为这是一个坏主意,因为它可能被滥用。

我发现this question几乎也正是我的问题。我链接的问题现在已有一年多了,因此我认为值得再次询问。

我认为主要的原因是因为存储规则确实可以访问uid(https://firebase.google.com/docs/storage/security/user-security)。如果我可以在那里使用uid来允许/禁止访问,那么我认为也可以在onFinalize触发器中访问uid。我似乎找不到方法。

hd7429 回答:在Finalize中的Firebase函数中获取uid,以存储Firebase

云存储事件不会保留用户上下文;但是,与规则结合使用时,您不必发送完整的ID令牌即可验证用户。您可以改为设置uid元数据项:

ref.updateMetadata({customMetadata: {uid: currentUser.uid}});

并按规则检查它:

match /files/{fileName} {
  allow update: if resource.metadata.uid == request.auth.uid;
}

这样,可以保证UID与用户的UID匹配,您可以从函数中访问它。

本文链接:https://www.f2er.com/3114001.html

大家都在问