我正在开发一个具有共享功能的简单本机待办事项应用程序。我正在使用 Firebase Storage 进行存储和共享。但是,我是 Firebase 的初学者,无法理解如何继续。我的要求如下
view
或 edit
模式(与 Google 云端硬盘文件完全一样)。view
或 edit
模式的选项。基本上是允许或禁止用户 B 查看数据的选项。我的尝试: Bullet 1 可以简单地通过
// These rules grant access to a node matching the authenticated
// user's ID from the Firebase auth token
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
对于第 2 点和第 3 点,我计划让所有用户都可以访问一个单独的 JSON 文件。因此,当用户 A 向用户 B 授予 edit
对其某些数据的访问权限时,用户 B 的 JSON 文件应使用 A 的 uid 进行更新。我无法为此编写安全规则,因为我不知道我们是否可以编写规则来从 JSON 文件中获取数据。此外,我认为这种方法不是很好,因为某些攻击者可能会用垃圾条目淹没用户 B 的 JSON 文件,实际上也可以删除现有条目。
如果您能帮助我们为 Firebase 存储实现这种类似 Google Drive 的共享功能,我们将不胜感激。谢谢!
答案 0 :(得分:1)
您可以允许谁可以在规则中写入或读取特定路径 如果您的数据库看起来像这样:- 您的规则可能如下所示:-
"rules": {
"$uid":{
"$todoid":{
"todoitem":{
".read":"$uid == auth.uid || data.parent().child('sharedwith').child(auth.uid).val() === 'editor' || data.parent().child('sharedwith').child(auth.uid).val() === 'editor'",
".write":"$uid == auth.uid || data.parent().child('sharedwith').child(auth.uid).val() === 'editor'"
}
}
}
}
您可以关注此博文以更好地理解:- https://firebase.googleblog.com/2016/10/group-security-in-firebase-database.html
答案 1 :(得分:0)
很高兴您尝试使用 Firebase 实时数据库规则。
首先,我猜您以不同的方式理解规则的概念。 firebase 中的规则不是为了拥有用户特定的数据控制而构建的。 这些规则用于向特定类型的用户授予特定数据访问权限
例如:
您可以向仅通过身份验证的用户授予特定子级的 R/W 权限。对于未通过身份验证的我们可以限制访问
此规则选项卡的主要目的是避免来自第三方访问的数据泄露
要了解有关 Firebase 规则的更多信息,请观看给定的视频。链接
https://www.youtube.com/watch?v=PUBnlbjZFAI
您也可以查看此文档