作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为了将群组创建者与群组成员链接在一起,我希望群组创建者提交一个连接字符串,群组成员随后可以使用该连接字符串来加入群组。
但是,一旦创建了连接字符串,除了创建者之外,我不希望任何人删除或覆盖该字符串或该字符串下的数据。
在我的 JavaScript 中,我可以轻松编写一个检查函数来查看它是否存在:
function tryToAddConnectionString(uid, desiredConnectionString)
{
firebase.database().ref('/connectionStrings/' + desiredConnectionString).once('value').then(function(snapshot){
if(snapshot.val()==null)
{
//There is no data therefore there is no connection string, so create one.
firebase.database().ref('connectionStrings/' + desiredConnectionString).set({
owner: uid });
}
else
{
//Connection String already exists. Throw "already exists" message
}
});
}
但这并不能阻止恶意黑客进入他/她的控制台并输入
firebase.database().ref('connectionStrings/' + desiredConnectionString).set(null);
这将删除/接管该组。
我可以设置规则来解决这个问题吗?另外,在
'/connectionStrings/'+desiredConnectionString+'members'
我希望人们能够将自己添加为成员。
回顾一下:我正在寻找一条规则,允许任何人创建连接字符串,但只有创建者可以删除连接字符串或更改所有者子文件夹,但任何人都可以读取/写入成员文件夹。
提前致谢。
最佳答案
您可以使用安全规则轻松做到这一点:
//add a condition to verify that the node doesn't exist or the
//You must add to your node the aid of the creator
".write":"!data.exist() || auth.uid === data.child('creator')"
您可以在此处查看还可以配置哪些内容 Security Rules Firebase
关于javascript - 如何在 firebase 中将子文件夹写入一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37605443/
我是一名优秀的程序员,十分优秀!