Отправить данные в Firebase анонимно - PullRequest
0 голосов
/ 10 июня 2018

Я бы хотел, чтобы анонимные пользователи могли отправлять данные в Firebase, но не удалять и не перезаписывать их.

Это то, что я использовал в последнее время:

Правила моей базы данных:

{
  "rules": {
    ".read": false,
    ".write": true
  }
}

Мой фрагмент javascript:

firebase.initializeApp({
    apiKey: "asdasd",
    databaseURL: "asdasd.firebaseio.com/"
});

var id = Math.random().toString(36).substr(2, 9);
var userData = 'hello';
var sendData = firebase.database().ref("data/" + id + "/").update({userData});

sendData.then(function() { console.log("data sent!") })

Очевидная проблема заключается в том, что я выставляю свой apiKey в сценарии, и любой может перезаписать или удалить данные.Есть ли практическое решение?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Эй, я думаю, что вы должны сделать это

reference= FirebaseDatabase.getInstance().getReference("announcement");
                AbsAnnouncementmodel absAnnouncementmodel=new AbsAnnouncementmodel(receiver,announcement);
                reference.push().setValue(absAnnouncementmodel);

здесь ссылка, связанная с DatabaseRefence

0 голосов
/ 10 июня 2018

Чтобы разрешить пользователям только писать новые данные, а не изменять существующие, вы можете сделать это в своих правилах:

{
  "rules": {
    ".read": false,
    ".write": "!data.exists()"
  }
}

Также см. Документацию Firebase по существующим и новым данным .

Я бы рекомендовал использовать встроенный в Firebase метод push() для генерации ключей, поскольку он добавляет некоторую предсказуемость вашему рандомизатору без ущерба для неуязвимости ключа:

firebase.database().ref("data")
  .push({userData})
  .then(function() { console.log("data sent!") });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...