2013-12-15 4 views
5

फायरबेस दस्तावेज़ों में उदाहरण फायरबेस सुरक्षा नियमों के मैन्युअल अपडेट मानते हैं। असली दुनिया सहयोगी अनुप्रयोगों का समर्थन करने के लिए सुरक्षा नियमों को प्रोग्रामेटिक रूप से कैसे संशोधित किया जा सकता है? उपयोग के मामले में जिस पर मैं विचार कर रहा हूं, आवश्यकता है कि उपयोगकर्ता अन्य उपयोगकर्ताओं को चयनित डेटा को सहयोग/साझा करने और सहयोगियों तक पहुंच प्रदान करने में सक्षम होने के लिए आमंत्रित करने में सक्षम हो। यह फायरबेस के साथ कैसे पूरा किया जा सकता है?फ़ायरबेस में सुरक्षा नियमों को प्रोग्रामेटिक रूप से संशोधित करने के लिए कैसे?

उत्तर

8

आपको वास्तव में अपने सुरक्षा नियमों को प्रोग्रामेटिक रूप से परिवर्तित नहीं करना चाहिए। आपको उनके बारे में कोड के रूप में सोचना चाहिए और उन्हें केवल समय पर तैनात करने के लिए बदलना चाहिए।

यदि आप जो करने की कोशिश कर रहे हैं वह बदल गया है, तो वास्तव में उपयोगकर्ताओं को क्या करने की अनुमति है, आपको सुरक्षा नियमों को लिखकर ऐसा करना चाहिए जो आपके फायरबेस में डेटा पर निर्भर करते हैं।

उदाहरण के लिए, मान लें कि आप डेटा के एक टुकड़े तक केवल एक विशिष्ट समूह में उपयोगकर्ताओं तक पहुंच प्रतिबंधित करना चाहते हैं। समूह सदस्यता में हर बार सुरक्षा नियमों को संशोधित करने के बजाय, आप बस समूह को फायरबेस में संग्रहीत करेंगे और आपके सुरक्षा नियमों को जांचने के लिए जांच लेंगे कि मौजूदा उपयोगकर्ता उस समूह में पहुंच की अनुमति देने से पहले है या नहीं।

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

इस तरह, कभी भी समूह सदस्यता बदलती है, उपयोगकर्ताओं को स्वचालित डेटा वे देखने के लिए अनुमति दी जानी चाहिए करने के लिए उपयोग प्रदान किया जाएगा।

सुरक्षा नियमों के एक और जटिल उदाहरण के लिए, Firefeed में नियम.जेसन फ़ाइल देखें।

+1

त्वरित उत्तर के लिए धन्यवाद। गतिशील रूप से अद्यतन उपयोगकर्ता को समझने के लिए समूहों का उपयोग करना समझ में आता है। लेकिन डायनामिक रूप से जोड़े गए डेटासेट को कैसे संभाला जाएगा? उदाहरण के लिए, कोई उपयोगकर्ता/उपयोगकर्ता/उपयोगकर्ता/परियोजनाओं/प्रोजेक्ट के तहत एक प्रोजेक्ट बना सकता है और फिर उस विशिष्ट प्रोजेक्ट के सहयोगियों के समूह को पढ़ने की पहुंच प्रदान करना चाहता है। फायरबेस के साथ यह कैसे पूरा किया जाएगा? – Jarnal

+1

समूह सेटअप सिर्फ एक उदाहरण था। आपको समूह रखने की आवश्यकता नहीं है - आप इसे अपने इच्छित किसी भी डेटा पर निर्भर कर सकते हैं। उदाहरण के लिए डेटासेट में "पठनीय" ध्वज हो सकता है, यदि सही पर सेट किया गया है तो इसे किसी को पढ़ने की अनुमति मिलती है। या, इसका इस्तेमाल करने वाले उपयोगकर्ताओं की "पठनीय" सूची हो सकती है। आदि ... –

+1

@AndrewLee, मेरे पास एक और जटिल मामला है: मैं गतिशील रूप से कमरे (शाखाएं) बना रहा हूं और मैं प्रत्येक कमरे को केवल एक्स विशिष्ट सहयोगियों तक सीमित करना चाहता हूं, और वहां सभी को लिखने से रोकना चाहता हूं। कमरे निर्माण पर इन अभिगम अधिकारों को मैं कैसे निर्दिष्ट कर सकता हूं? ध्यान दें कि लाखों अलग-अलग कमरे हो सकते हैं। –

0

लेकिन डायनामिक रूप से डेटासेट को कैसे जोड़ा जाएगा?

आप बच्चे $ नोड का उपयोग कर ऐसा करेंगे। यह इस तरह दिखता है:

यहाँ है मेरी डेटाबेस

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

और आप ऐसा करने से प्रत्येक उपयोगकर्ता पर नियम निर्धारित होगा:

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

आशा आप यही पूछ रहे थे है, और आशा इससे मदद मिलती है!

संबंधित मुद्दे

 संबंधित मुद्दे