2013-12-15 40 views
5

Firebase belgelerindeki örnekler, firebase güvenlik kurallarının el ile güncelleştirildiğini varsayar. Güvenlik kuralları gerçek dünyadaki işbirlikçi uygulamaları desteklemek için nasıl programlanabilir? Göz önünde bulundurduğum kullanım durumunda, bir kullanıcının diğer kullanıcıları seçili verileri paylaşması/paylaşması ve ortak çalışanlara erişim vermesi/iptal etmesi için davet etmesi gerekir. Bu, firebase ile nasıl başarılabilir?Firebase'de güvenlik kurallarını program aracılığıyla nasıl değiştirebilirim?

cevap

8

Güvenlik kurallarınızı programsal olarak değiştirmemelisiniz. Bunları kodu olarak düşünmelisiniz ve sadece bunları kurulum zamanında değiştirmelisiniz.

Yapmaya çalıştığınız şey, kullanıcıların gerçekten ne yapmasına izin verildiğini değiştirmekse, bunu Firebase'inize bağlı olan güvenlik kurallarını yazarak yapmanız gerekir. Örneğin, belirli bir gruptaki kullanıcılara bir veriye erişimi kısıtlamak istediğinizi varsayalım. Grup üyeliği her değiştiğinde güvenlik kurallarını değiştirmekten ziyade, grubu Firebase'de depolamanız ve erişiminizin izin vermeden önce geçerli kullanıcının o grupta olup olmadığını kontrol etmek için güvenlik kurallarınızı kontrol etmeniz gerekir.

".read" : "root.child('groups').child($groupID).child(auth.userid).exists()" 

Bu şekilde, her zaman grup üyeliği değişiklikleri, kullanıcılar otomatik olarak görmeye izin verilmelidir verilere erişim izni verilecektir.

Daha karmaşık bir güvenlik kuralları örneği için Firefeed numaralı telefonun rules.json dosyasına bakın.

+1

teşekkürler. Dinamik olarak güncellenen kullanıcının işlem yapması için grupları kullanmak mantıklı. Ancak dinamik olarak eklenen veri kümeleri nasıl ele alınır? Örneğin, bir kullanıcı/users/userid/projects/projectid altında bir proje oluşturabilir ve ardından söz konusu proje için bir grup iş ortağı grubuna okuma erişimi vermek isteyebilir. Bu Firebase ile nasıl yapılır? – Jarnal

+1

Grup kurulumu sadece bir örnekti. Gruplara sahip olmanıza gerek yok - istediğiniz herhangi bir veriye bağlı olabilirsiniz. Örneğin, veri kümesinin kendisi "okunabilir" bir bayrağı olabilir, eğer true olarak ayarlanırsa herkesin okumasına izin verilir. Ya da, kullanmasına izin verilen kullanıcıların "okunabilir" bir listesi olabilir. Etc ... –

+1

@AndrewLee, Daha karmaşık bir durumum var: Odaları dinamik olarak oluşturuyorum ve her odayı yalnızca belirli X ortak çalışanlarıyla sınırlamak istiyorum, herkesin orada yazmasını engelliyorum. Oda erişiminin ardından bu erişim haklarını nasıl belirleyebilirim? Milyonlarca farklı oda olabileceğini unutmayın. –

0

Ancak dinamik olarak eklenmiş veri kümeleri nasıl ele alınır?

Bunu, $ düğümünü kullanarak gerçekleştirirsiniz. Bu şuna benzer: Burada

benim veritabanı

users 
- userIDHere 
    - name: John Doe 
    - whatever: who knows 

Ve bunu yaparak her kullanıcı kuralları ayarlarsınız: Bu ne soran vardı olduğunu

{ 
    "rules": { 
    "users": { 
     "$user": { 
     // whatever rules you want here, and you can reference $user to get the user's id. 
     } 
    } 
    } 
} 

Umut ve umut Bu yardımcı olur! Hızlı yanıt için

İlgili konular