Standardmäßig ist die Datenbank in einem Projekt in der Firebase-Konsole nur für Administratoren lesbar / beschreibbar (z. B. in Cloud-Funktionen oder Prozessen, die ein Admin-SDK verwenden). Benutzer der regulären clientseitigen SDKs können nur dann auf die Datenbank zugreifen, wenn Sie die serverseitigen Sicherheitsregeln ändern.
Sie können die Regeln so ändern, dass die Datenbank nur von authentifizierten Benutzern gelesen / beschrieben werden kann:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
Informationen zu den Sicherheitsregeln für die Firebase-Datenbank finden Sie im Schnellstart .
Da Sie den Benutzer jedoch nicht über Ihren Code anmelden, verweigert Ihnen die Datenbank den Zugriff auf die Daten. Um dies zu beheben, müssen Sie entweder nicht authentifizierten Zugriff auf Ihre Datenbank zulassen oder den Benutzer anmelden, bevor Sie auf die Datenbank zugreifen.
Erlauben Sie nicht authentifizierten Zugriff auf Ihre Datenbank
Die derzeit einfachste Problemumgehung (bis das Lernprogramm aktualisiert wird) besteht darin, das Datenbankfenster in der Konsole für Ihr Projekt aufzurufen, die Registerkarte Regeln auszuwählen und den Inhalt durch die folgenden Regeln zu ersetzen:
{
"rules": {
".read": true,
".write": true
}
}
Dadurch kann Ihre neue Datenbank von jedem gelesen und beschrieben werden, der die URL der Datenbank kennt. Stellen Sie sicher, dass Sie Ihre Datenbank erneut sichern, bevor Sie mit der Produktion beginnen. Andernfalls wird sie wahrscheinlich von jemandem missbraucht.
Melden Sie sich beim Benutzer an, bevor Sie auf die Datenbank zugreifen
Rufen Sie für eine (etwas) zeitaufwändigere, aber sicherere Lösung eine der signIn...
Methoden der Firebase-Authentifizierung auf, um sicherzustellen, dass der Benutzer angemeldet ist, bevor Sie auf die Datenbank zugreifen. Der einfachste Weg, dies zu tun, ist die anonyme Authentifizierung :
firebase.auth().signInAnonymously().catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
Fügen Sie dann Ihre Listener hinzu, wenn die Anmeldung erkannt wird
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.
// ...
}
// ...
});