JavaScript का इस्तेमाल करके, पासवर्ड पर आधारित खातों का इस्तेमाल करके Firebase की मदद से पुष्टि करें

Firebase Authentication का इस्तेमाल करके, अपने उपयोगकर्ताओं को अपने ईमेल पते और पासवर्ड का इस्तेमाल करके, Firebase से पुष्टि करने की अनुमति दी जा सकती है. साथ ही, अपने ऐप्लिकेशन के पासवर्ड पर आधारित खातों को मैनेज किया जा सकता है.

शुरू करने से पहले

  1. Firebase को अपने JavaScript प्रोजेक्ट में जोड़ें.
  2. अगर आपने अब तक अपने ऐप्लिकेशन को Firebase प्रोजेक्ट से कनेक्ट नहीं किया है, तो Firebase कंसोल की मदद से ऐसा करें.
  3. ईमेल/पासवर्ड से साइन-इन करने की सुविधा चालू करें:
    1. Firebase कंसोल में, Auth सेक्शन खोलें.
    2. साइन इन करने का तरीका टैब पर, साइन इन करने के लिए ईमेल/पासवर्ड का तरीका चालू करें और सेव करें पर क्लिक करें.

पासवर्ड पर आधारित खाता बनाना

पासवर्ड वाला नया उपयोगकर्ता खाता बनाने के लिए, अपने ऐप्लिकेशन के साइन-अप पेज पर दिया गया तरीका अपनाएं:

  1. जब कोई नया उपयोगकर्ता आपके ऐप्लिकेशन के साइन-अप फ़ॉर्म का इस्तेमाल करके साइन अप करता है, तो अपने ऐप्लिकेशन के लिए खाते की पुष्टि करने के सभी नए चरण पूरे करें. जैसे, यह पुष्टि करना कि नए खाते का पासवर्ड सही तरीके से लिखा गया है और वह पासवर्ड के लिए बनी आपकी ज़रूरी शर्तों के मुताबिक है.
  2. नए उपयोगकर्ता का ईमेल पता और पासवर्ड createUserWithEmailAndPassword को भेजकर एक नया खाता बनाएं:

    Web

    import { getAuth, createUserWithEmailAndPassword } from "firebase/auth";
    
    const auth = getAuth();
    createUserWithEmailAndPassword(auth, email, password)
      .then((userCredential) => {
        // Signed up 
        const user = userCredential.user;
        // ...
      })
      .catch((error) => {
        const errorCode = error.code;
        const errorMessage = error.message;
        // ..
      });

    Web

    firebase.auth().createUserWithEmailAndPassword(email, password)
      .then((userCredential) => {
        // Signed in 
        var user = userCredential.user;
        // ...
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
        // ..
      });
    अगर नया खाता बनाया गया है, तो उपयोगकर्ता अपने-आप साइन इन हो जाता है. साइन इन किए हुए उपयोगकर्ता की जानकारी पाने के लिए, नीचे दिए गए 'अगले चरण' सेक्शन को देखें.

    यहां पर गड़बड़ियों का पता लगाकर उन्हें ठीक भी किया जा सकता है. गड़बड़ी कोड की सूची के लिए, आधिकारिक रेफ़रंस दस्तावेज़ पर एक नज़र डालें.

किसी उपयोगकर्ता को ईमेल पते और पासवर्ड से साइन इन कराना

पासवर्ड से उपयोगकर्ता में साइन इन करने के चरण, नया खाता बनाने के चरणों जैसे ही हैं. अपने ऐप्लिकेशन के साइन-इन पेज पर, यह तरीका अपनाएं:

  1. जब कोई उपयोगकर्ता आपके ऐप्लिकेशन में साइन इन करता है, तो उपयोगकर्ता के ईमेल पते और पासवर्ड को signInWithEmailAndPassword पर भेजें:

    Web

    import { getAuth, signInWithEmailAndPassword } from "firebase/auth";
    
    const auth = getAuth();
    signInWithEmailAndPassword(auth, email, password)
      .then((userCredential) => {
        // Signed in 
        const user = userCredential.user;
        // ...
      })
      .catch((error) => {
        const errorCode = error.code;
        const errorMessage = error.message;
      });

    Web

    firebase.auth().signInWithEmailAndPassword(email, password)
      .then((userCredential) => {
        // Signed in
        var user = userCredential.user;
        // ...
      })
      .catch((error) => {
        var errorCode = error.code;
        var errorMessage = error.message;
      });
    साइन इन किए हुए उपयोगकर्ता की जानकारी पाने के लिए, नीचे दिए गए 'अगले चरण' सेक्शन को देखें.

    यहां पर गड़बड़ियों का पता लगाकर उन्हें ठीक भी किया जा सकता है. गड़बड़ी कोड की सूची के लिए, पुष्टि करने से जुड़े रेफ़रंस दस्तावेज़ देखें.

सुझाव: पासवर्ड से जुड़ी नीति सेट करें

पासवर्ड की जटिलता की ज़रूरी शर्तें लागू करके, खाते की सुरक्षा को बेहतर बनाया जा सकता है.

अपने प्रोजेक्ट के लिए पासवर्ड की नीति कॉन्फ़िगर करने के लिए, Firebase कंसोल के पुष्टि करने की सेटिंग पेज पर, पासवर्ड की नीति टैब खोलें:

पुष्टि करने की सेटिंग

Firebase Authentication पासवर्ड से जुड़ी नीतियां, पासवर्ड से जुड़ी इन ज़रूरी शर्तों के साथ काम करती हैं:

  • लोअरकेस वर्ण डालना ज़रूरी है

  • अपरकेस वर्ण ज़रूरी है

  • अंक में लिखना ज़रूरी है

  • अक्षर और अंक के अलावा कोई दूसरा वर्ण होना चाहिए

    ये वर्ण, बिना अक्षर और अंक वाले वर्ण की ज़रूरी शर्तों को पूरा करते हैं: ^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~

  • पासवर्ड की कम से कम लंबाई (इसकी सीमा 6 से 30 वर्ण है; डिफ़ॉल्ट लंबाई 6 है)

  • पासवर्ड की ज़्यादा से ज़्यादा लंबाई (ज़्यादा से ज़्यादा 4096 वर्ण)

पासवर्ड से जुड़ी नीति को लागू करने की सुविधा को दो मोड में चालू किया जा सकता है:

  • ज़रूरी है: जब तक उपयोगकर्ता, आपकी नीति के मुताबिक पासवर्ड अपडेट नहीं करता, तब तक साइन अप करने की कोशिशें नहीं होंगी.

  • सूचना दें: उपयोगकर्ता, ज़रूरी शर्तों को पूरा न करने वाले पासवर्ड से साइन अप कर सकते हैं. इस मोड का इस्तेमाल करते समय, आपको यह देखना चाहिए कि उपयोगकर्ता का पासवर्ड, क्लाइंट साइड पर बनी नीति के मुताबिक है या नहीं. अगर ऐसा नहीं है, तो उपयोगकर्ता को पासवर्ड अपडेट करने के लिए कहें.

नए उपयोगकर्ताओं को हमेशा ऐसा पासवर्ड चुनना होता है जो आपकी नीति के मुताबिक हो.

अगर आपके पास सक्रिय उपयोगकर्ता हैं, तो हमारा सुझाव है कि जब तक आप उन उपयोगकर्ताओं का ऐक्सेस ब्लॉक नहीं करना चाहते जिनके पासवर्ड आपकी नीति का पालन नहीं करते, जब तक आप साइन इन करने पर ज़बरदस्ती अपग्रेड करने की सुविधा चालू न करें. इसके बजाय, सूचना मोड का इस्तेमाल करें. इससे उपयोगकर्ता अपने मौजूदा पासवर्ड से साइन इन कर सकते हैं. साथ ही, उन्हें उन ज़रूरी शर्तों के बारे में जानकारी मिलती है जो उनके पासवर्ड में मौजूद नहीं हैं.

क्लाइंट पर पासवर्ड की पुष्टि करना

import { getAuth, validatePassword } from "firebase/auth";
const status = await validatePassword(getAuth(), passwordFromUser);
if (!status.isValid) {
  // Password could not be validated. Use the status to show what
  // requirements are met and which are missing.

  // If a criterion is undefined, it is not required by policy. If the
  // criterion is defined but false, it is required but not fulfilled by
  // the given password. For example:
  const needsLowerCase = status.containsLowercaseLetter !== true;
}

सुझाया गया: ईमेल गिनती सुरक्षा चालू करें

ईमेल पतों को पैरामीटर के तौर पर लेने वाले कुछ Firebase Authentication तरीकों में खास गड़बड़ियां होती हैं. ऐसा तब होता है, जब ईमेल पते को रजिस्टर नहीं किया गया हो (उदाहरण के लिए, ईमेल पते और पासवर्ड से साइन इन करते समय) या इस्तेमाल न होने की स्थिति में (उदाहरण के लिए, उपयोगकर्ता का ईमेल पता बदलते समय). यह लोगों को खास तरीकों का सुझाव देने में मददगार हो सकता है. हालांकि, नुकसान पहुंचाने वाले लोग या ग्रुप आपके उपयोगकर्ताओं के रजिस्टर किए गए ईमेल पते खोजकर भी इसका गलत इस्तेमाल कर सकते हैं.

इस जोखिम को कम करने के लिए, हमारा सुझाव है कि आप Google Cloud gcloud टूल का इस्तेमाल करके, अपने प्रोजेक्ट के लिए ईमेल की गिनती करने की सुविधा को चालू करें. ध्यान दें कि इस सुविधा को चालू करने पर, Firebase Authentication की गड़बड़ी की शिकायत करने के तरीके में बदलाव होता है: पक्का करें कि आपका ऐप्लिकेशन, ज़्यादा खास गड़बड़ियों पर निर्भर न हो.

अगले चरण

जब कोई उपयोगकर्ता पहली बार साइन इन करता है, तो एक नया उपयोगकर्ता खाता बन जाता है. साथ ही, उस खाते को उन क्रेडेंशियल से लिंक कर दिया जाता है जिनका इस्तेमाल करके उपयोगकर्ता ने साइन इन किया था. जैसे, उपयोगकर्ता का नाम और पासवर्ड, फ़ोन नंबर या पुष्टि करने वाली सेवा की जानकारी. इस नए खाते को आपके Firebase प्रोजेक्ट के हिस्से के तौर पर सेव किया जाता है. इसका इस्तेमाल, आपके प्रोजेक्ट के हर ऐप्लिकेशन में किसी उपयोगकर्ता की पहचान करने के लिए किया जा सकता है. भले ही, उपयोगकर्ता साइन इन करने का तरीका कोई भी हो.

  • हमारा सुझाव है कि आप अपने ऐप्लिकेशन में, उपयोगकर्ता की पुष्टि की स्थिति जानने के लिए Auth ऑब्जेक्ट पर एक ऑब्ज़र्वर सेट करें. इसके बाद, User ऑब्जेक्ट से उपयोगकर्ता की प्रोफ़ाइल की बुनियादी जानकारी पाई जा सकती है. उपयोगकर्ताओं को मैनेज करें देखें.

  • अपने Firebase Realtime Database और Cloud Storage सुरक्षा नियमों में, आपको auth वैरिएबल से साइन इन किए हुए उपयोगकर्ता का यूनीक यूज़र आईडी मिल सकता है. साथ ही, इसका इस्तेमाल यह कंट्रोल करने के लिए किया जा सकता है कि उपयोगकर्ता कौनसा डेटा ऐक्सेस कर सकता है.

पुष्टि करने वाली सेवा देने वाली कंपनी के क्रेडेंशियल को किसी मौजूदा उपयोगकर्ता खाते से लिंक करके, उपयोगकर्ताओं को पुष्टि करने वाली कई कंपनियों का इस्तेमाल करके, आपके ऐप्लिकेशन में साइन इन करने की अनुमति दी जा सकती है.

किसी उपयोगकर्ता को साइन आउट करने के लिए, signOut को कॉल करें:

Web

import { getAuth, signOut } from "firebase/auth";

const auth = getAuth();
signOut(auth).then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});

Web

firebase.auth().signOut().then(() => {
  // Sign-out successful.
}).catch((error) => {
  // An error happened.
});