使用 Firebase 权限使数据在创建后只读
Working with Firebase permissions for making data readonly once created
我正在开发一个电子商务网络应用程序,我需要在数据库上创建只读订单,这样可以防止编辑用户生成的订单,即使是网站管理员也可以。
我的规则中有这个
"orders":{
"$order": {
".read": "$order == auth.uid || auth.isAdmin == true",
".write": "$order == auth.uid && (data.child('orders').child($order).hasChildren(['items', 'datePlace', 'shipping', 'totalPriceOfOrder']) !== newData.hasChildren(['items', 'datePlace', 'shipping', 'totalPriceOfOrder'])"
},
".read": "auth.isAdmin == true"
}
($order == auth.uid || auth.isAdmin == true)
在 ".write"
at $order
中的目的是确保只有登录用户才能写入订单对象和 at 项目,其中 uid 作为键.
(data.child('orders').child($order).hasChildren(['items', 'datePlace', 'shipping', 'totalPriceOfOrder']) !== newData.hasChildren(['items', 'datePlace', 'shipping', 'totalPriceOfOrder'])
的目的是确保仅当 table 以前不存在时才能进行此写入。
这不起作用,我不知道为什么它不起作用。
这通常表示如果auth.uid == $order
,通过身份验证你可以写入数据库或修改
".write": "$order == auth.uid && (data.child('orders').child($order).hasChildren(['items', 'datePlace', 'shipping', 'totalPriceOfOrder']) !== newData.hasChildren(['items', 'datePlace', 'shipping', 'totalPriceOfOrder'])"
只读使用
".read": "$order == auth.uid || auth.isAdmin == true"
".write": "!data.exists()"
!data.exists()
将允许您写入数据库一次,不允许更新或删除。用户可以阅读但不能更新。
我正在开发一个电子商务网络应用程序,我需要在数据库上创建只读订单,这样可以防止编辑用户生成的订单,即使是网站管理员也可以。
我的规则中有这个
"orders":{
"$order": {
".read": "$order == auth.uid || auth.isAdmin == true",
".write": "$order == auth.uid && (data.child('orders').child($order).hasChildren(['items', 'datePlace', 'shipping', 'totalPriceOfOrder']) !== newData.hasChildren(['items', 'datePlace', 'shipping', 'totalPriceOfOrder'])"
},
".read": "auth.isAdmin == true"
}
($order == auth.uid || auth.isAdmin == true)
在 ".write"
at $order
中的目的是确保只有登录用户才能写入订单对象和 at 项目,其中 uid 作为键.
(data.child('orders').child($order).hasChildren(['items', 'datePlace', 'shipping', 'totalPriceOfOrder']) !== newData.hasChildren(['items', 'datePlace', 'shipping', 'totalPriceOfOrder'])
的目的是确保仅当 table 以前不存在时才能进行此写入。
这不起作用,我不知道为什么它不起作用。
这通常表示如果auth.uid == $order
,通过身份验证你可以写入数据库或修改
".write": "$order == auth.uid && (data.child('orders').child($order).hasChildren(['items', 'datePlace', 'shipping', 'totalPriceOfOrder']) !== newData.hasChildren(['items', 'datePlace', 'shipping', 'totalPriceOfOrder'])"
只读使用
".read": "$order == auth.uid || auth.isAdmin == true"
".write": "!data.exists()"
!data.exists()
将允许您写入数据库一次,不允许更新或删除。用户可以阅读但不能更新。