我使用签名的url并从客户端上传文件。
当我的应用程序的用户使用来自客户端的签名URL将文件上传到云存储时。这样的客户端代码:
upload(signedUrl, file) {
return fetch(signedUrl, {
method: 'PUT',
body: file
}).then((res) => {
console.log('upload success');
console.log('res: ', res);
});
},
它将触发云功能以验证上传的文件。
我如何知道云功能中的用户ID?
因为我要发布一条带有用户ID和gcs对象名称的validationPassed
消息,以通知后端服务器按用户ID将该gcs对象名称保存到数据库中。
答案 0 :(得分:0)
通过REST API上传文件时,没有与该文件关联的用户身份。您可以尝试在上传时设置元数据,但这并不安全,任何人都可以传递任何ID(或不传递ID)。
我知道上传文件并获得安全用户的唯一安全方法是使用Firebase客户端库进行上传,同时还使用Firebase身份验证,将UID放在元数据或文件路径中,然后使用安全规则检查实际的UID与声明的UID匹配。