2013-02-26 14 views
11

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

मैं उन समूहों में उपयोगकर्ताओं को उनके उपस्थिति डेटा साझा करने की अनुमति कैसे दे सकता हूं, और समूह में हर दूसरे उपयोगकर्ता की उपस्थिति देख सकता हूं, लेकिन उस डेटा को बाहरी दुनिया से निजी रखना?

उत्तर

15

सबसे पहले, आपको समर्थित फ़ायरबेस प्रमाणीकरण तंत्र में से किसी एक का उपयोग कर अपने उपयोगकर्ताओं को प्रमाणीकृत करना शुरू करना होगा। फायरबेस में प्रमाणीकरण के बारे में अधिक जानकारी https://www.firebase.com/docs/security/authentication.html पर उपलब्ध है।

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

बंटवारे समूह उपस्थिति के लिए, मैं इस तरह के रूप में एक संरचना का उपयोग कर अपने डेटा भंडारण की सिफारिश करेंगे:

/groups/<group-id>/users/<user-id>/<presence-status>

इस संरचना का उपयोग करके आप सुरक्षा नियम है कि उपस्थिति डेटा विश्व स्तर पर निजी बनाना होगा लिख ​​सकता है, जबकि उपयोगकर्ता के केवल कर सकते थे प्रत्येक उपयोगकर्ता के लिए उपस्थिति स्थिति को उन समूहों में देखें जिनकी उन्हें अनुमति है और केवल अपने उपयोगकर्ता के राज्य को संपादित करें। यहाँ एक उदाहरण सुरक्षा नियम-सेट कि इन प्रतिबंधों को लागू करता है:

{ 
    "groups": { 
    "$groupid": { 
     // Users can view the presence state of users in this group if they 
     // are authenticated and listed in the group themselves. 
     ".read": "auth != null && data.child('users').hasChild(auth.uid)" 
     "users": { 
     "$userid": { 
      // Users can update only their individual account data. 
      ".write": "auth != null && $userid == auth.uid && newData.val() != null" 
     } 
     } 
    } 
    } 
} 

उपरोक्त उदाहरण में, केवल /groups/<group-id>/users/ में उपयोगकर्ता समूह के लिए उपस्थिति डेटा देखने की अनुमति है, और प्रत्येक उपयोगकर्ता केवल अपनी व्यक्तिगत डेटा को संशोधित कर सकते हैं। उपयोगकर्ता केवल अपने व्यक्तिगत उपयोगकर्ता नोड को पढ़/लिख सकता है।

इसे थोड़ा आगे बढ़ाने के लिए, मान लीजिए कि आपके पास उपयोगकर्ताओं का एक विशेष वर्ग है जो केवल समूह बनाने की अनुमति है। प्रमाणीकरण टोकन उत्पन्न करते समय आप उपयोगकर्ता के अनुमति स्तर को शामिल कर सकते हैं (नीचे दिए गए उदाहरण के लिए, हम isAdmin=true सेट करेंगे), और अपडेट किए गए सुरक्षा नियमों का उपयोग करके उस विशेष स्तर तक पहुंच प्रदान करें। उदाहरण के लिए, यदि केवल कुछ उपयोगकर्ताओं को समूह बनाने की अनुमति है, तो आप $ groupide के तहत .write नियम को अपडेट कर सकते हैं:

"$groupid": { 
    // Only admins can create new groups. 
    ".write": "auth != null && auth.isAdmin === true" 
    //... 
} 
+1

क्या इसका कहीं उदाहरण है। – Harry

+0

अच्छी तरह से काम करता है। धन्यवाद ! – Shirane85