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

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

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

हालांकि, कुछ मामलों में ऐसा हो सकता है कि यह तरीका सही न हो:

  • संवेदनशील जानकारी वाले ऐप्लिकेशन इन स्थितियों में ऐसा हो सकता है कि वे विंडो को खोलने की स्थिति को हटा दें या टैब बंद हो. अगर उपयोगकर्ता साइन आउट करना भूल जाता है, तो ऐसा करना ज़रूरी है.
  • ऐसे ऐप्लिकेशन जिनका इस्तेमाल किसी ऐसे डिवाइस पर किया जाता है जिसे कई उपयोगकर्ता शेयर करते हैं. एक कॉमन उदाहरण के लिए, यहां लाइब्रेरी के कंप्यूटर में चल रहा ऐप्लिकेशन दिया गया है.
  • शेयर किए गए डिवाइस पर ऐसा ऐप्लिकेशन जिसे कई उपयोगकर्ता ऐक्सेस कर सकते हों. डेवलपर यह नहीं बता पा रहा है कि उस ऐप्लिकेशन को कैसे ऐक्सेस किया जाता है और उपयोगकर्ता को यह चुनने की सुविधा देने के लिए कि उसका सेशन जारी रखना है या नहीं या नहीं. इसके लिए, "मुझे याद रखें" का इस्तेमाल करें विकल्प.
  • कुछ परिस्थितियों में, हो सकता है कि डेवलपर किसी अनाम उपयोगकर्ता को बनाए रखना न चाहे जब तक कि उस उपयोगकर्ता को गैर-अनाम खाते (फ़ेडरेटेड, पासवर्ड, फ़ोन वगैरह).
  • ऐसा हो सकता है कि कोई डेवलपर किसी ऐप्लिकेशन में अलग-अलग उपयोगकर्ताओं को साइन इन करने की अनुमति देना चाहे ट्रैक किया जा सकता है. डिफ़ॉल्ट रूप से सभी टैब पर स्थिति एक जैसी रहती है एक ही ऑरिजिन के लिए है.

जैसा कि ऊपर बताया गया है, ऐसी कई स्थितियां हैं जिनमें डिफ़ॉल्ट स्थिरता को बदलना पड़ सकता है.

पुष्टि की प्रोसेस के दौरान ऐसा किया जा सकता है

आप किसी उपयोगकर्ता के मालिकाना हक वाली पुष्टि की स्थिति आपके ऐप्लिकेशन या उपयोगकर्ता की ज़रूरी शर्तों के आधार पर Firebase पुष्टि का इंस्टेंस.

इनम मान ब्यौरा
firebase.auth.Auth.Persistence.LOCAL 'स्थानीय' इससे पता चलता है कि ब्राउज़र विंडो के चालू होने पर भी स्टेटस बना रहेगा बंद कर दिया जाता है या React Native में गतिविधि खत्म हो जाती है. अश्लील साइन आउट की ज़रूरत होती है. ध्यान दें कि Firebase पुष्टि वाले वेब सेशन एक होस्ट ऑरिजिन वाला होगा और उसे सिर्फ़ एक डोमेन के लिए जारी रखा जाएगा.
firebase.auth.Auth.Persistence.SESSION 'सेशन' इससे पता चलता है कि स्थिति सिर्फ़ मौजूदा सेशन या टैब में बनी रहेगी, और जिस टैब या विंडो में उपयोगकर्ता ने पुष्टि की है उसे हटा दिया जाएगा बंद है. यह सिर्फ़ वेब ऐप्लिकेशन पर लागू होता है.
firebase.auth.Auth.Persistence.NONE 'कोई नहीं' इससे पता चलता है कि स्थिति को सिर्फ़ मेमोरी में सेव किया जाएगा और उसे हटा दिया जाएगा जब विंडो या गतिविधि को रीफ़्रेश किया जाता है.

पुष्टि की स्थिति में बदलाव करना

आप firebase.auth().setPersistence तरीका:

Web

import { getAuth, setPersistence, signInWithEmailAndPassword, browserSessionPersistence } from "firebase/auth";

const auth = getAuth();
setPersistence(auth, browserSessionPersistence)
  .then(() => {
    // Existing and future Auth states are now persisted in the current
    // session only. Closing the window would clear any existing state even
    // if a user forgets to sign out.
    // ...
    // New sign-in will be persisted with session persistence.
    return signInWithEmailAndPassword(auth, email, password);
  })
  .catch((error) => {
    // Handle Errors here.
    const errorCode = error.code;
    const errorMessage = error.message;
  });

Web

firebase.auth().setPersistence(firebase.auth.Auth.Persistence.SESSION)
  .then(() => {
    // Existing and future Auth states are now persisted in the current
    // session only. Closing the window would clear any existing state even
    // if a user forgets to sign out.
    // ...
    // New sign-in will be persisted with session persistence.
    return firebase.auth().signInWithEmailAndPassword(email, password);
  })
  .catch((error) => {
    // Handle Errors here.
    var errorCode = error.code;
    var errorMessage = error.message;
  });

इससे बताए गए Auth इंस्टेंस पर परसिस्टेंस का टाइप बदल जाएगा और इस तरह की परसिस्टेंस को लागू करें आगे के साइन-इन अनुरोध शामिल हैं. इनमें दूसरे वेबलिंक पर भेजने के अनुरोधों के साथ साइन-इन करने का अनुरोध भी शामिल है. इससे एक ऐसा प्रॉमिस लौटाना जो राज्य की, किसी एक प्रॉपर्टी से कॉपी करने की प्रोसेस पूरी करने के बाद रिज़ॉल्व हो जाए पहले से ज़्यादा स्टोरेज मिलता है. परसिस्टेंट वैल्यू बदलने के बाद, साइन इन करने के तरीके को कॉल करने पर परसिस्टेंटिटी में बदलाव को नई पुष्टि स्थिति पर लागू करने से पहले पूरा करना.

वेब ब्राउज़र और React नेटिव ऐप्लिकेशन के लिए, यह डिफ़ॉल्ट तौर पर local होता है. हालांकि, यह ज़रूरी है कि ब्राउज़र इस मेमोरी तंत्र का समर्थन करता है, उदा. तीसरे पक्ष की कुकी/डेटा चालू हैं) वहीं, Node.js बैकएंड ऐप्लिकेशन के लिए यह none है.

परसिस्टेंस व्यवहार की खास जानकारी

की वर्तमान स्थिति का निर्धारण करते समय निम्न मानदंड लागू किए जाएंगे मज़बूती के साथ ट्रेंडिंग.

  • शुरुआत में, SDK टूल यह जांच करेगा कि पुष्टि किया गया उपयोगकर्ता मौजूद है या नहीं. जब तक setPersistence को कॉल किया गया है. उस उपयोगकर्ता का मौजूदा परसिस्टेंट टाइप यह होगा बाद में साइन इन करने की कोशिश के लिए लागू किया जाएगा. इसलिए, अगर वह उपयोगकर्ता खाता बनाए रखता है पिछले वेब पेज पर session और एक नए पेज पर विज़िट किया गया, किसी अन्य उपयोगकर्ता के साथ फिर से प्रवेश करने से उस उपयोगकर्ता की स्थिति session परसिस्टेंस का इस्तेमाल करके भी सेव किया गया.
  • अगर किसी भी उपयोगकर्ता ने साइन इन नहीं किया है और कोई परसिस्टेंट नहीं (जारी रखने) का विकल्प नहीं चुना गया है, तो डिफ़ॉल्ट सेटिंग लागू किया जाएगा (ब्राउज़र ऐप्लिकेशन में local).
  • अगर किसी भी उपयोगकर्ता ने साइन इन नहीं किया है और नए तरह का परसिस्टेंस सेट है, तो आने वाले समय में साइन-इन करने की कोशिश, इस तरह की परसिस्टेंस का इस्तेमाल करेगी.
  • अगर उपयोगकर्ता साइन इन है और परसिस्टेंटेंस टाइप में बदलाव किया जाता है, तो मौजूदा साइन इन किए हुए उपयोगकर्ता का परसिस्टेंस नए में बदल जाएगा. सभी भावी साइन-इन प्रयास उस नई परसिस्टेंस का इस्तेमाल करेंगे.
  • जब साइन इनविद रीडायरेक्ट को कॉल किया जाता है, तब परसिस्टेंटेंस का मौजूदा टाइप बरकरार रहता है साथ ही, इसे नए साइन इन किए हुए उपयोगकर्ता के लिए, OAuth फ़्लो के आखिर में लागू किया जाता है. भले ही, परसिस्टेंस none था. अगर उस पेज पर परसिस्टेंस को साफ़ तौर पर बताया गया है, तो यह पिछले पेज से बरकरार रखी गई पुष्टि की स्थिति रीडायरेक्ट फ़्लो का इस्तेमाल करें.

    Web

    import { getAuth, setPersistence, signInWithRedirect, inMemoryPersistence, GoogleAuthProvider } from "firebase/auth";
    
    const auth = getAuth();
    setPersistence(auth, inMemoryPersistence)
      .then(() => {
        const provider = new GoogleAuthProvider();
        // In memory persistence will be applied to the signed in Google user
        // even though the persistence was set to 'none' and a page redirect
        // occurred.
        return signInWithRedirect(auth, provider);
      })
      .catch((error) => {
        // Handle Errors here.
        const errorCode = error.code;
        const errorMessage = error.message;
      });

    Web

    firebase.auth().setPersistence(firebase.auth.Auth.Persistence.NONE)
      .then(() => {
        var provider = new firebase.auth.GoogleAuthProvider();
        // In memory persistence will be applied to the signed in Google user
        // even though the persistence was set to 'none' and a page redirect
        // occurred.
        return firebase.auth().signInWithRedirect(provider);
      })
      .catch((error) => {
        // Handle Errors here.
        var errorCode = error.code;
        var errorMessage = error.message;
      });

सभी ब्राउज़र टैब पर अनुमानित व्यवहार

अलग-अलग परसिस्टेंस टाइप होने पर, ये सामान्य व्यवहार लागू होंगे अलग-अलग टैब पर कैसे काम करता है. शर्त यह है कि कभी भी, एक साथ कई तरह की जानकारी सेव की जा सकती है. उदाहरण के लिए, अनुमति की स्थिति session और local तरह का स्टोरेज):

  • उपयोगकर्ता, अलग-अलग उपयोगकर्ताओं के साथ session या none परसिस्टेंटनेस का इस्तेमाल करके साइन इन कर सकते हैं ट्रैक करने में मदद मिलती है. हर टैब, दूसरे टैब की स्थिति नहीं देख सकता.
  • local परसिस्टेंस का इस्तेमाल करके साइन इन करने की कोशिश का पता लगाया जाएगा और को सिंक किया जाता है. अगर उपयोगकर्ता ने पहले किसी खास प्लैटफ़ॉर्म से साइन इन किया था, तो session या none परसिस्टेंस का इस्तेमाल करने वाले टैब से, वह स्थिति मिटा दी जाएगी.
  • अगर उपयोगकर्ता ने पहले से ही local परसिस्टेंस टैब खोला गया और फिर एक टैब में, none या session परसिस्टेंस पर स्विच किया गया, उस टैब की स्थिति में उपयोगकर्ता के बने रहने के हिसाब से बदलाव किया जाएगा session या none और अन्य सभी टैब पर, उपयोगकर्ता को साइन आउट कर दिया जाएगा.