2013-04-11 46 views
6

Firebox'u (çoğunlukla Firebase tarafından barındırılmayan) projemizde kullanmak isteriz, ancak sorunu çözmenin en iyi yolunu bulmakta zorluk çekiyoruz.Firebase JSON Güvenlik ve Diziler

Temel olarak, birçok kullanıcımız var ve her kullanıcı birçok gruba üye olabilir. Bu "grupların" her birinin, kullanıcıların düzenleyebileceği kendi Fir Defteri vardır. MySQL'i kullanarak çok gelişmiş bir veritabanı yapısına sahibiz ve şu anda kullanıcı verilerini Firebase'e taşımak istemiyoruz, bu yüzden daha yaratıcı olacağımızı düşündük.

Kullanıcıların ait olmadıkları grupların Firepad'lerini düzenleyebilmelerini istemiyoruz. Bu nedenle, kimlik doğrulama jetonumuzun bir parçası olarak, kullanıcı kimliği ve ait oldukları grupların listesini göndermeyi denedik. Daha sonra Firebase JSON güvenlik sistemini kullanarak, o sırada düzenlenmiş olan Firmanın, kullanıcının ait olduğu gruplar listesinde olduğunu doğrulayabiliriz.

Sorun şu ki, JSON sistemi pek çok komut kabul etmiyor gibi görünüyor. IndexOf yok ve auth değişkeninde hasChild'u arayamıyorum.

Kullanıcıların, tüm verilerimizi Firebase'e taşımadan yalnızca ait oldukları grupların Firepad'lerini düzenleyebilmelerini nasıl sağlayabiliriz? (Ya da veritabanının iki kopyasının - bir tanesi MySQL'de ve bir Firebase'de tutulması)

cevap

9

Buradaki hileler, grupları saklamak için bir dizi yerine bir nesneyi kullanmaktır (biraz garip, biliyorum. Bunu daha kolay/daha sezgisel hale getirin).

{ 
    ... 
    "$group": { 
     ".read": "auth.groups[$group] == true", 
     ".write": "auth.groups[$group] == true" 
    } 
} 

Ve sonra bir kullanıcı okumuş olacak/yazma erişimi: Eğer böyle bir şey olabilir güvenlik kurallarında sonra

{ userid: 'blah', groups: { 'group1': true, 'group2': true, ... } } 

Ve: Yani auth belirteçteki, gibi bir şey saklamak istiyorum/groups/<grup> yalnızca <grubu> gruplarının auth jetonlarındadır.

+0

Bingo. Muhtemelen bunu düşünmeliydim, ancak köşeli parantezli üyelere ulaşmanın kolaylık sağlaması yararlı olacaktır. Teşekkür ederim! –

+0

Mike, bu alanda herhangi bir gelişme kaydettiniz mi? Kimlik doğrulama değişkeni için hangi işlevlerin kullanılabildiğini açıklayan herhangi bir belge var mı? – Samuel

+0

@Samuel Burada özel değişiklik yoktur. Genel olarak, yetkinin herhangi bir işlevi yoktur, yalnızca yetkilendirme kodunuzdaki verilerdir. Kullanılabilen tek "işlev", yetkisiz verilerinizde bir diziniz varsa, substring/regex uyumu için birkaç yöntem vardır: https://www.firebase.com/docs/security/api/string/ –