【发布时间】:2021-03-11 11:15:05
【问题描述】:
所以我的网站上有一个功能,允许用户上传个人资料照片。照片存储在我的 Firebase 存储中其 UID 下的文件夹中,然后成功上传后,downloadURL 将存储在我的 Firebase 实时数据库中的 UID 下,如下所示:
database.ref('users/'+firebase.auth().currentUser.uid).update({
profilePhoto: downloadURL
});
现在我已经制定了一些规则,以便只有身份验证 UID 可以向自己写入数据。
{
"rules": {
"users": {
".read": "true",
"$user": {
".read": "true",
".write": "auth.uid == $user",
"profilePhoto": {
".validate": "newData.isString()
},
}
}
}
}
工作得很好,但我怎样才能让它只写入直接来自我的 Firebase 存储的 URL?
例如,有知识的用户可以简单地运行上面的脚本并将数据更改为存储之外的内容,或者只是一些随机文本,当我获取它时会破坏个人资料图像。
我想做的一件事是添加 Firebase 存储“基本路径”作为验证,如下所示:
"profilePhoto": {
".validate": "newData.isString()
&& newData.val().contains('mystorage-12345.appspot.com/')
}
但是有没有更好的方法呢? '基本路径'会改变吗?
【问题讨论】:
标签: javascript jquery firebase