Firebase 安全规则 (.write)
Firebase security rule (.write)
我尝试保存任何用户事务日志。因此,例如,当用户创建、更新或删除某些内容时,其日志保存在 "Transactions".
下
我在编写有关此问题的安全规则 (.write) 时遇到困难。
例如;如果名为 (userKey2) 的用户更新名为 (userKey1) 的用户数据,如下所示:
{ "Users"
{"userKey1":
{ "Name":"Mike",
"Age":"18",
"Location":"Sydney" }
}
}
我也加到"Transactions"
{ "Transactions" :
{ "Key" :
{ "Object" : "Users",
"DateTime: "2017-10-25 10:00:00",
"ObjectKey" : "userKey1",
"Type" : "Update",
"Who" : "userKey2"
}
}
}
我一起向firebase发送更新命令。 (对于 "Users" 和 "Transactions")保证全部更新或 none.
如何为 "Transactions" 制定(.write)安全规则?因为我想防止任何没有 "Object" 的数据输入到 "Transactions" 并且 "ObjectKey" 确实存在于 "Users" 集合中。
但在我的例子中,none 个还存在(它们都是不同集合中的新数据)所以我无法在 "Users" 集合中检查它。
您可能要考虑使用 Firebase 数据库触发器来实现此功能。客户端应用程序只会写入 "Users" 节点。您可以创建一个触发器,每次对 "Users" 节点下的数据进行更新时都会触发该触发器;该触发器可以将附加条目写入 "Transactions" 节点。
触发器方式保证你只会将数据写入真正存在于Users下的Transactions。只有在用户下添加数据时才会触发触发器。
此外,由于对事务的触发器写入以管理员权限执行,因此您无需向最终客户端用户授予事务节点写入权限。
我尝试保存任何用户事务日志。因此,例如,当用户创建、更新或删除某些内容时,其日志保存在 "Transactions".
下我在编写有关此问题的安全规则 (.write) 时遇到困难。
例如;如果名为 (userKey2) 的用户更新名为 (userKey1) 的用户数据,如下所示:
{ "Users"
{"userKey1":
{ "Name":"Mike",
"Age":"18",
"Location":"Sydney" }
}
}
我也加到"Transactions"
{ "Transactions" :
{ "Key" :
{ "Object" : "Users",
"DateTime: "2017-10-25 10:00:00",
"ObjectKey" : "userKey1",
"Type" : "Update",
"Who" : "userKey2"
}
}
}
我一起向firebase发送更新命令。 (对于 "Users" 和 "Transactions")保证全部更新或 none.
如何为 "Transactions" 制定(.write)安全规则?因为我想防止任何没有 "Object" 的数据输入到 "Transactions" 并且 "ObjectKey" 确实存在于 "Users" 集合中。
但在我的例子中,none 个还存在(它们都是不同集合中的新数据)所以我无法在 "Users" 集合中检查它。
您可能要考虑使用 Firebase 数据库触发器来实现此功能。客户端应用程序只会写入 "Users" 节点。您可以创建一个触发器,每次对 "Users" 节点下的数据进行更新时都会触发该触发器;该触发器可以将附加条目写入 "Transactions" 节点。
触发器方式保证你只会将数据写入真正存在于Users下的Transactions。只有在用户下添加数据时才会触发触发器。
此外,由于对事务的触发器写入以管理员权限执行,因此您无需向最终客户端用户授予事务节点写入权限。