2016-06-23 5 views
5

दूसरे शब्दों में, यह सत्यापित करने का कोई तरीका है कि उपयोगकर्ता (जब वह सेट करता है तो उपयोगकर्ता // ईमेल कहता है), यह वास्तव में उस उपयोगकर्ता का ईमेल आईडी है जो लॉग इन है?हम कैसे गारंटी दे सकते हैं कि फ़ायरबेस उपयोगकर्ता द्वारा सहेजा गया ईमेल वास्तव में उसका ईमेल है?

हम एक फायरबेस आवेदन बना रहे हैं, जहां सेवा के कुछ पहलुओं को ईमेल अधिसूचनाओं के माध्यम से वितरित किया जाता है। हम गलत उपयोगकर्ता को ईमेल नहीं भेजना चाहते हैं। ऐसा गारंटी देने का कोई तरीका नहीं है कि उपयोगकर्ताओं // ईमेल पथ पर लिखी गई ईमेल जानकारी वास्तव में लॉगिन करने के लिए उपयोग की जाने वाली ईमेल (सीधे या Google या facebook आदि के माध्यम से)

मेरी राय में, अगर लेखक (नियम) auth.email फ़ील्ड के अलावा auth.email फ़ील्ड के अलावा था, यह समस्या को हल करेगा और उपयोग केस को संभालने के लिए नियम लिखा जा सकता है।

+1

आप क्यों चाहेंगे? मेरे Google खाते द्वारा रिपोर्ट किया गया ईमेल पता उस पते के समान नहीं है जिस पर मैं ईमेल प्राप्त करना पसंद करता हूं। जब तक आपने एक पुष्टिकरण लिंक के साथ एक ईमेल भेजकर किसी पते का स्वामित्व सत्यापित कर लिया है, तो इससे कोई फर्क नहीं पड़ता कि यह वास्तव में क्या पता है। –

+0

कारण यह है कि यदि हम किसी ईमेल को सेवा प्रदान कर रहे हैं, और असंगतता यह भविष्य में सुरक्षा जोखिम बन जाती है। एक दुर्भावनापूर्ण उपयोगकर्ता अन्य लोगों के ईमेल को संभावित रूप से खराब कर सकता है और संभावित रूप से सेवा/क्रेडिट इत्यादि का लाभ उठा सकता है – kvs

उत्तर

9

फायरबेस प्रमाणीकरण की नवीनतम रिलीज ईमेल सत्यापन का समर्थन करता है।

कोई पहचान प्रदाता (ईमेल + पासवर्ड, गूगल) वैकल्पिक ईमेल पते का सत्यापन का समर्थन करता है, तो वह जानकारी एपीआई में और सुरक्षा नियमों में उपलब्ध कराया गया है। (**)

उदाहरण के लिए, JavaScript API has an emailVerified property है कि आप अपने कोड में देख सकते हैं:

firebase.auth().currentUser.emailVerified 

सच

सुरक्षा नियमों तुम दोनों का उपयोग कर सकते में ईमेल पता और क्या यह सत्यापित है, जो कुछ महान उपयोग-मामलों को संभव बनाता है। इन नियमों उदाहरण के लिए केवल एक प्रमाणीकृत, सत्यापित जीमेल उपयोगकर्ता अपने प्रोफ़ाइल लिख सकते हैं के साथ:

{ 
    "rules": { 
    ".read": "auth != null", 
    "gmailUsers": { 
     "$uid": { 
     ".write": "auth.token.email_verified == true && 
        auth.token.email.matches(/.*@gmail.com$/)" 
     } 
    } 
    } 
} 

(**) यह सुनिश्चित करने के लिए Google साइन-इन और ईमेल + पासवर्ड के लिए लागू होता है। जहां तक ​​मुझे पता है, फेसबुक सत्यापित होने पर ही ईमेल पते का पर्दाफाश करेगा, इसलिए आप उस पर भरोसा कर सकते हैं।

+3

मुझे सुरक्षा नियमों के किसी दस्तावेज़ में auth.token नहीं मिला है। क्या आप एक लिंक पोस्ट कर सकते हैं? ऐसा लगता है कि यह काम कर सकता है। – kvs

+2

यह समाधान काम करता है। आपकी सहायता के लिए धन्यवाद. – kvs

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