2013-01-23 19 views
20

मुझे इसे दस्तावेज़ों में नहीं मिला लेकिन उपयोगकर्ताओं के समूह को परिभाषित करने और उस समूह का उपयोग करने के लिए अलग-अलग स्थानों तक पहुंच प्रदान करने के लिए अलग-अलग स्थानों तक पहुंच प्रदान करने का एक तरीका है उपयोगकर्ताओं?उपयोगकर्ताओं के समूह में फायरबेस स्थानों तक पहुंच प्रदान करना

सादर, एलटी

उत्तर

31

वहाँ "समूह" Firebase में लिए स्पष्ट समर्थन नहीं है, क्योंकि आप उन्हें अपने आप को काफी आसानी से प्रतिनिधित्व कर सकते हैं। आपकी स्थिति के आधार पर, यहां दो विकल्प दिए गए हैं।

फायरबेस में समूह की जानकारी संग्रहीत करना।

निम्नलिखित डेटा 2 समूहों ('अल्फा' और 'बीटा') और सुरक्षित डेटा के 3 टुकड़े ('thing1', 'thing2', और 'thing3')

{ 
    "groups": { 
    "alpha": { 
     "joe": true, 
     "sally": true 
    }, 
    "beta": { 
     "joe": true, 
     "fred": true 
    } 
    }, 
    "data": { 
    "thing1": { 
     "group": "alpha" 
     /* data accessible only by the "alpha" group */ 
    }, 
    "thing2": { 
     "group": "beta" 
     /* data accessible only by the "beta" group */ 
    }, 
    "thing3": { 
     "group": "alpha" 
     /* more data accessible by the "alpha" group */ 
    } 
    } 
} 

प्रतिनिधित्व करने के लिए इस्तेमाल किया जा सकता फिर हम निम्नलिखित नियमों का उपयोग सुरक्षा लागू करने के लिए कर सकते हैं: तो फिर

{ 
    "rules": { 
    "data": { 
     "$thing": { 
     ".read": "root.child('groups').child(data.child('group').val()).hasChild(auth.id)", 
     ".write": "root.child('groups').child(data.child('group').val()).hasChild(auth.id)" 
     } 
    } 
    } 
} 

अगर मैं {आईडी: 'सैली'} के साथ प्रमाणीकृत कर रहा हूँ मेरी प्रमाणन वस्तु के रूप में, मैं thing1 और thing3 का लाभ उठा सकेंगे, लेकिन नहीं thing2।

ऑथ टोकन में समूह की जानकारी संग्रहीत करना।

यदि आप अपना खुद का ऑथ टोकन बना रहे हैं और आप जानते हैं कि उपयोगकर्ता उस समय के समूह में कौन सा समूह है, तो आप अपने द्वारा उत्पन्न ऑथ टोकन में समूहों की सूची संग्रहीत कर सकते हैं। उदाहरण के लिए, जब आप उपयोगकर्ता 'fred' के लिए ऑथ टोकन उत्पन्न करते हैं, तो "{id: 'fred', समूह: {alpha: true, beta: true}}"

और फिर आप समूह सदस्यता को निम्न के साथ लागू कर सकते हैं:

{ 
    "rules": { 
    "data": { 
     "$thing": { 
     ".read": "auth[data.child('group').val()] != null", 
     ".write": "auth[data.child('group').val()] != null" 
     } 
    } 
    } 
} 
+0

माइकल, आपकी तेज प्रतिक्रिया के लिए धन्यवाद, पहला विकल्प वह था जिसे हम ढूंढ रहे थे। – user1452215

+1

यदि आप डेटा तक पहुंच प्रदान करना चाहते हैं तो क्या होगा। एकाधिक समूहों के लिए $ चीज़ (केवल एक के बजाय)? क्या कुछ है। HasAnyChild() या इसी तरह? – Pl4yeR

+0

पहला JSON ऑब्जेक्ट कहां जाता है? यह समूह, अल्फा, बीटा आदि को परिभाषित करता है? मुझे नहीं लगता कि आप इसे वास्तविक नियम सुरक्षा वस्तु में डाल सकते हैं ... जब तक कि मुझे कुछ याद नहीं आ रहा है? – Matt