PERMISSION_DENIED: разрешение отклонено, когда я пытаюсь добавить данные в базу данных базы данных огнем, используя javascript [duplicate]

Я предлагаю использовать QueryPath для синтаксического разбора XML и HTML в PHP. В основном это тот же синтаксис, что и jQuery, только на стороне сервера.

52
задан Mosh Feu 9 January 2017 в 14:36
поделиться

1 ответ

По умолчанию база данных в проекте в новой Firebase Console доступна только для чтения / записи аутентифицированными пользователями:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

См. quickstart для Firebase Правила безопасности базы данных .

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

Разрешить неавторизованный доступ к вашей базе данных

Простейший обходной путь для момент (пока обновление не будет обновлено) - перейти на панель «База данных» в консоли для вашего проекта, выбрать вкладку «Правила» и заменить содержимое этими правилами:

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

Это делает вашу новую базу данных доступной для чтения и можно писать всем. Убедитесь, что ваша база данных снова защищена, прежде чем вы начнете производство, иначе кто-то, возможно, начнет ее злоупотреблять.

Войдите в систему перед доступом к базе данных

. Для (немного) больше но более безопасное решение, вызовите один из методов signIn... для проверки подлинности Firebase Authentication , чтобы убедиться, что пользователь выполнил вход перед доступом к базе данных. Самый простой способ сделать это: с использованием анонимной аутентификации :

firebase.auth().signInAnonymously().catch(function(error) {
  // Handle Errors here.
  var errorCode = error.code;
  var errorMessage = error.message;
  // ...
});

И затем присоединить ваших слушателей, когда обнаружен вход

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
    var isAnonymous = user.isAnonymous;
    var uid = user.uid;
    var userRef = app.dataInfo.child(app.users);

    var useridRef = userRef.child(app.userid);

    useridRef.set({
      locations: "",
      theme: "",
      colorScheme: "",
      food: ""
    });

  } else {
    // User is signed out.
    // ...
  }
  // ...
});
162
ответ дан Frank van Puffelen 17 August 2018 в 13:38
поделиться
  • 1
    Спасибо. Использовал небезопасное исправление, а процитировал ваш ответ в ответе на аналогичный вопрос , чтобы продвигаться по вопросам разрешения Firebase в этом учебнике Ember . Но где мы добавляем (безопасный) анонимный код аутентификации? – Dave Everitt 12 May 2017 в 12:47
  • 2
    OMG идет час. У меня было это, но значения были ЛОЖНЫ ... Я просто забыл об этом. Изменил их в TRUE и bam, приложение работает так, как вы думаете ... – Andy 17 July 2018 в 16:27
Другие вопросы по тегам:

Похожие вопросы: