使用Firebase中的事务是自动修改数据的好方法,但我怎么知道用户实际上使用我的代码插入数据?Firebase安全性 - 事务
例如,如果用户获得对数据位置的引用(使用浏览器控制台)并使用set
覆盖以前的数据而不是单击我在后台使用transaction
的预先设计的按钮?
更新(例子):
var wilmaRef = new Firebase('https://docs-examples.firebaseio.com/samplechat/users/wilma');
wilmaRef.transaction(function(currentData) {
if (currentData === null) {
return { name: { first: 'Wilma', last: 'Flintstone' } };
} else {
console.log('User wilma already exists.');
return; // Abort the transaction.
}
});
现在,如果有什么用户使用:
wilmaRef.set({name: { first: 'Wilma', last: 'Flintstone' }});
下面的高级答案。但是就像你之前的那个一样,这个问题并不适合堆栈溢出格式。添加特定的数据结构和示例代码以使其更好地适应。 –
@FrankvanPuffelen用示例更新了问题 –
它仍然是[XY问题](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。两种操作都有相同的结果。你试图阻止什么样的滥用?例如:“我想让用户只指定一次他们的名字,之后他们不能改变它”。如果您在[Firebase安全性和规则指南](https://www.firebase.com/docs/security/guide/index.html)上花费了一些时间,您会找到实现此目的的示例。 –