Varsayılan olarak, Firebase Konsolundaki bir projedeki veritabanı yalnızca yönetici kullanıcılar tarafından okunabilir / yazılabilir (ör. Cloud Functions veya Yönetici SDK kullanan işlemler). Normal istemci tarafı SDK'ların kullanıcıları, sunucu tarafı güvenlik kurallarını değiştirmediğiniz sürece veritabanına erişemez.
Kuralları, veritabanı yalnızca kimliği doğrulanmış kullanıcılar tarafından okunabilir / yazılabilir olacak şekilde değiştirebilirsiniz:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
Firebase Veritabanı güvenlik kuralları için hızlı başlangıca bakın .
Ancak kullanıcıyı kodunuzdan oturum açmadığınız için, veritabanı verilere erişiminizi reddeder. Bunu çözmek için veritabanınıza kimliği doğrulanmamış erişime izin vermeniz veya veritabanına erişmeden önce kullanıcıda oturum açmanız gerekir.
Veritabanınıza kimliği doğrulanmamış erişime izin verin
Şu an için en basit geçici çözüm (eğitim güncellenene kadar), projeniz için konsolda Veritabanı paneline gitmek, Kurallar sekmesini seçmek ve içeriği şu kurallarla değiştirmektir:
{
"rules": {
".read": true,
".write": true
}
}
Bu, yeni veritabanınızı veritabanının URL'sini bilen herkes tarafından okunabilir ve yazılabilir hale getirir. Üretime geçmeden önce veritabanınızı yeniden güvence altına aldığınızdan emin olun, aksi takdirde birisi onu kötüye kullanmaya başlayabilir.
Veritabanına erişmeden önce kullanıcıda oturum açın
(Biraz) daha fazla zaman alan, ancak daha güvenli bir çözüm için, kullanıcının veritabanına erişmeden önce oturum açtığından emin olmak için Firebase Kimlik DoğrulamasısignIn...
yöntemlerinden birini çağırın . Bunu yapmanın en basit yolu anonim kimlik doğrulaması kullanmaktır :
firebase.auth().signInAnonymously().catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
Ve sonra, oturum açma algılandığında dinleyicilerinizi ekleyin
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.
// ...
}
// ...
});