我有一个反应本机聊天应用程序,用户可以在其中向其他用户发送消息。简化的消息对象如下所示:
interface Message {
senderId: string,
text: string,
videoDownloadUrl: string
}
消息存储在
firestore的
messages
集合中,相应的视频存储在 storage 中。在消息对象中,我只存储视频的 downloadUrl
,而不是实际的 url,视频位于 firabase 存储服务器上。如何安全删除此类消息及其视频而不让用户知道视频的实际路径?
我的想法是,如果用户有权访问视频的实际路径,这将是一个安全问题。所以我只是将 downloadUrl 放入消息对象中。这个想法是否正确,或者我可以让用户访问实际路径吗?我不知道如何在没有视频路径的情况下删除消息的视频。
您的帖子中有两个不同的问题。第一个问题已经被问过好几次了。对象的路径存储在下载 URL 本身中。
对于你的第二个问题:
在 Cloud Storage 中提供对象的路径并没有固有的问题。无论如何,该路径都会被编码到下载 URL 中,因此它并不是真正的秘密。您应该做的是为您的存储桶提供安全规则,根据您的安全要求限制下载。这些要求应与 Firebase 身份验证中的用户帐户相关,以确定谁应该能够读取或写入哪些对象。