की सूची के लिए फायरबेस स्टोरेज कस्टम मेटाडाटा सुरक्षा नियम मैं एक मैसेजिंग आईओएस ऐप विकसित कर रहा हूं, जहां कोई उपयोगकर्ता एकाधिक लोगों को एक ही संदेश भेज सकता है। संदेश फायरबेस स्टोरेज में सहेजा गया है। मैं केवल उन उपयोगकर्ताओं को सक्षम करना चाहता हूं जिन्हें संदेश भेज दिया गया है ताकि वे इसे स्टोरेज से पढ़ सकें। मैं पहले से ही अपने फायरबेस डेटाबेस में इस नियम संरचना को लागू कर रहा हूं।यूआईड्स
भंडारण के लिए इसे कार्यान्वित करने के लिए मैं संदेश फ़ाइल कस्टममैटाटाटा में यूआईडी की एक सूची जोड़ता हूं, जिसमें संदेश लिखने वाले व्यक्ति के लिए एक यूआईडी कुंजी शामिल है। मुझे अपने iOS एप्लिकेशन में निम्न कार्य करें:
var metadataValues = [String:String]()
for friendUid in friendsSelected.keys {
metadataValues.updateValue(friendUid, forKey: friendUid) // how do I access these values in my security rules
}
metadataValues.updateValue(senderUid, forKey: "fromUid") // how do I access this in security rules
let messageMetadata = FIRStorageMetadata()
messageMetadata.customMetadata = metadataValues
यह मेरी पढ़ने के लिए मेरे प्रयास किया गया था और Firebase संग्रहण में संदेशों नोड के लिए सुरक्षा नियमों बारे में है, लेकिन यह काम नहीं करता है और प्रलेखन कोई मदद नहीं की है।
match /messages/{messageId} {
allow read: if request.auth.uid == resource.metadata.request.auth.uid; // I want all friend uids to be able to read file
allow write: if request.auth.uid == resource.metadata.fromUid; // only the person who create the message can access it
}
मेरा प्रयास काम नहीं करता है। मैं अपने सुरक्षा नियमों में 'fromUid' कुंजी और दोस्तों uids 'request.auth.uid' के साथ customMetadata चर का उपयोग कैसे करूं ??
एक साइडेनोट के रूप में, मुझे लगता है कि कस्टममैटाटा में कितनी कुंजियां जोड़ती हैं, इस पर कोई सीमा नहीं है?
वास्तव में इस पर सहायता की सराहना करेगा। किसी कारण से मैंने जो कुछ भी किया है, वह काम नहीं कर पाया है। – Edward