【发布时间】:2019-06-16 00:53:02
【问题描述】:
我想从 Firebase 读取数据:
firebase.database().ref('videos/' + $videoId + '/data' ).once('value')
但在安全规则中,我不想让任何人都可以阅读。又不想用:
".read" : true
我希望未经身份验证的用户能够读取数据,如果他们有一个特殊的令牌,他们会在 url 中传递。
firebase.database().ref('videos/' + $videoId + '/data?token=secretToken').once('value')
我的视频数据如下所示:
{
vidoes: {
$videoId: {
data: {
...
}
tokens: {
secretToken: true
}
}
}
我想安全规则应该是这样的:
{
vidoes: {
$videoId: {
data: {
".read": "data.parent().child('tokens/' + auth.urlQuery('token').val() ).exist()"
}
}
}
有没有人可以访问 Firbase 安全规则中的查询字符串/ url 参数?我可以使用 Firebase 函数来创建 api,但这是一个额外的步骤和网络请求。
本质上,它的行为类似于 Firebase 存储的“令牌”:
https://firebasestorage.googleapis.com/v0/b/columbus-c4de8.appspot.com/o/richContent%2F1-min.jpeg_-LPgLxBMt1tBR0dDdNzH?alt=media&token=dfe24c92-e0c2-484a-81df-c09a710b3d34
如果令牌正确,则用户可以读取数据。
注意:技术上可以将令牌用于“.write”安全规则。见:Using newData on Updates in Firebase Security Rules
【问题讨论】:
标签: firebase firebase-security