पार्स में इकाइयों के प्रबंधन में ऐसी कई वस्तुएं हैं जिन्हें मुझे वर्तमान लॉग इन उपयोगकर्ता से जोड़ना है।जावास्क्रिप्ट एपीआई का उपयोग कर पार्स में ऑब्जेक्ट सिक्योरिटी - सहेजे गए ऑब्जेक्ट्स पर उपयोगकर्ताओं को ट्राइंग
मेरे चिंताएं हैं:
- वहाँ सुनिश्चित करना है कि
User
में पारित किया जा रहा कोई बैकएंड कोड है वर्तमान उपयोगकर्ता में लॉग इन किया है। - उपयोगकर्ता अन्य उपयोगकर्ताओं को किसी भी नव निर्मित वस्तुएं असाइन कर सकते हैं।
वे this example TODO app जो the documentation में जगह में कोई बादल कोड से पता चलता है कि यह सुनिश्चित करने के User
कि Todo
को असाइन किया गया है वर्तमान में उपयोगकर्ता के लॉग इन किया है।
अब जब मैं the code देखता हूं तो मुझे लगता है कि जब भी कोई ऑब्जेक्ट सहेजा जाता है तो यह उपयोगकर्ता से जुड़ा होता है। क्या कोई यह समझा सकता है कि यह एप्लिकेशन क्यों काम करता है और यह एस User
के साथ कैसे संबद्ध है?
अद्यतन: कभी नहीं, मुझे उनके कोड में जगह मिली जहां उन्होंने टोडो को बचाने के लिए उपयोगकर्ता निर्दिष्ट किया। मेरा सवाल यह है कि, उपयोगकर्ता को कोड लिखने से क्या रोक रहा है जो किसी और के उपयोगकर्ता आईडी के साथ टोडो बचाता है?
this.todos.create({
content: this.input.val(),
order: this.todos.nextOrder(),
done: false,
user: Parse.User.current(),
ACL: new Parse.ACL(Parse.User.current())
});
अद्यतन # 2: करने के लिए केवल उन User
वस्तुओं उनके स्वामित्व वाले को पढ़ने के लिए सक्षम होने के लिए अनुमति देता है User
वस्तु एक ACL
सेट है है, तो वे किसी अन्य उपयोगकर्ता वस्तु प्राप्त करने के लिए क्वेरी करने के लिए सक्षम नहीं होगा हाथ से जाने देना। हालांकि, दो अन्य संभावित समस्याएं हैं:
- भले ही
Todo
रों मेज परuser
क्षेत्र एक_User
की आवश्यकता है उन्हें पूरेUser
वस्तु के स्थान पर उपयोगकर्ता की objectId पारित करने के लिए के लिए यह संभव है? - मेरा मानना है कि वे एक नया उपयोगकर्ता ऑब्जेक्ट भी बना सकते हैं और इसे असाइन कर सकते हैं ... मैं एक परिदृश्य के बारे में सोचने की कोशिश कर रहा हूं जहां यह एक मुद्दा होगा, लेकिन मैं अभी नहीं कर सकता।
यदि कोई भी सहायक हो सकता है तो उन लोगों में से किसी एक को पुष्टि या समाधान प्रदान कर सकता है। अभी # 1 का परीक्षण करने की कोशिश करने जा रहे हैं।
अद्यतन # 3 - कुछ परीक्षण करने के बाद: Todo
रों मेज पर user
क्षेत्र एक _User
वस्तु की आवश्यकता है
- है, यह objectId स्ट्रिंग के रूप नहीं ले जाएगा।
हालांकि वे एक नया उपयोगकर्ता ऑब्जेक्ट बना सकते हैं और ऑब्जेक्ट सेट कर सकते हैं।
var user = new Parse.User(); // Create user object user.id = "cqmEuj1Bzf"; // Assign user id // Create and save Todo var td = new Todo(); td.set("name", "Some ting todo"); td.set("user", user); td.save();
यहाँ यह सही है कि मैं क्या बारे में चिंतित था वास्तव में है। मैं टोडो को दूसरे उपयोगकर्ता के खाते में सफलतापूर्वक सहेजने में सक्षम था - जब तक मैं उनके उपयोगकर्ता_आईडी (objectId
) को जानता हूं।पर्याप्त उपयोगकर्ताओं के साथ वे कम से कम एक अनुमान लगा सकते हैं कि किसी के खाते को यादृच्छिक रूप से खराब कर दें।
तो अब क्या?
उत्तर: क्लाउड कोड का उपयोग यह सत्यापित करने के लिए करें कि उपयोगकर्ता वर्तमान उपयोगकर्ता से मेल खाता है। उत्तर Parse's forums here पर पोस्ट किया गया था।
अरे मैं अपनी खोज का अपना जवाब में यह आसान अतः शैली को खोजने के लिए बनाने के लिए अलग हो गए। – Diogenes