Почему при определении структуры в заголовке нет ошибки переопределения? [Дубликат]

По умолчанию база данных в проекте в новой 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.
    // ...
  }
  // ...
});

1
задан MSalters 1 October 2010 в 08:25
поделиться

1 ответ

EDIT2:

Добро пожаловать в ODR

EDIT 1:

Сделайте переменные extern в файле заголовка.

extern AClass* variable1;   // assuming AClass is declared at this point.
extern int* variable2;

Определите их один раз и только один раз в любом файле cpp, например в main.cpp в области пространства имен.

AClass* variable1 = NULL;   // assuming AClass is declared at this point.
int* variable2 = NULL;
9
ответ дан Chubsdad 21 August 2018 в 04:34
поделиться