हे एवरीवर्न तो कैसे हैं आप लोग यार मुझे बहुत ज़्यादा request आता था कि भी ओथेंटिकेशन के ऊपर वीडियोस और थे टिकस्ट समझ में नहीं आता दोनों में डिफरेंसेस क्या है हम लोग बीट कैसे यूज करते हैं है शिंघ क्या होता है जेवल टू क्या आता है सेशंस क्या होता है बहुत ही अपने आप में ना एक थिल लेयर ऑफ डिफरेंसेस है हर चीजों के बीच में तो मुझे पता है कि यह बहुत सारे लोगों को नहीं समझ में आता मुझे लगा कि इस चीज के पर डिटेल वीडियो बनाना बहुत ही ज्यादा जरूरी है तो जिन लोगों को नहीं पता उन्होंने बता दो यार यह पूरा का पूर आपको अभी तक स्टार्ट नहीं किए प्लीज आप शाट कर लीजिए सच बता रहा हूं यह बोट कैप आपको इतना वापिडेंस दिलवाएगा नोट जेस की ऊपर क्या खुद कहोगे भाईया अब तो मैं इंटरव्यू तक निकालूंगा मुझे इतना को समझ और सब बता रहा हूँ, मैंने पूरा दो दिन इसमें invest किया है कि किस manner में arrange करके पढ़ाओ so that आपको इस चीज में benefit होकी easily समझ में आया है एक छोटा से request है यार please वीडियो को start करने से पहले एक बार like कर दो मेरी motivation के लिए चलो समझते हैं middleware क्या होता है तो समझो middleware क्या है मैंने पढ़ा रखा है इसको middleware कहते है मिडल विया ऐसा समझो ना, जैसे कि हम लोग रेस्टोरेंट में जाते हैं, ठीक है, तो रेस्टोरेंट में हम गए, हमने कुछ ओडर किया, कि भाईया मुझे ये समान लाके दो, ये मुझे खाना है, ठीक है, तो क्या आपने जैसे ओडर दिया, वैसे ही तुरंदर में समान आ बिहाइंड दा सिन बहुत सारे प्रोसेसर्स होते हैं जैसे कि सबजीयां काटना तेल वेल लोट्स आफ थिंग्स है मुझे काना बनाना भी नहीं आता पॉइंट इस डाइट कि जब भी हम लोग किसी भी रिक्वेस्ट को भेजते हैं सर्वर पर और रिस्पॉंस जब हम उस सर्वर से मिलता है तो इस बीच में बहुत सारे प्रोसेस हो रहे होते हैं उस प्रोसेस को उस फेज को उस जैसे कि हम लोग जब भी अगर बात करें, इसे कि हमने जो सिस्टम बनाया था, Node Hotel बनाया था, जिन लोगों को सोर्स कोड नहीं पटा, वो GitHub, Prince, and Node Hotels करके हमने सोर्स कोड बनाया है, आप इसको देख सकते हैं, इस repo में हम लोग सब कुछ maintain कर रहे हैं, मैंने proper Node Hotel application बनाया है, कि Hotel मैंने यहां पर होस्ट भी कर रखा है, इस होस्ट को ही बता रही है कि कहां मैंने होस्ट किया है आप यहां से भी सोर्ट्स कोड ले सकते हो लेकिन मेरा यह सबसे अधिक रिकमेंट रहेगा कि प्लीज जब भी मेरी वीडियोस को देखते हो जब क्लाइट जो है, वो रिक्वेस्ट भेजता है होटल के सिस्टम में राइट जैसे कि हो सकता उसे मैन्यू चाहिए या रिजर्वेशन बुक कराना है या फिर किसी पर्सन का डिटेल चाहिए लोट्स आफ थिंग्स जो तरखा में एंडफाइंड बना रखा था मिडल वेयर बीच में सिन होता है जो बिहाइंड द शीन होता ह और फाइनल रिस्पांस फेज होता है जहां पर हम लोग को जैसे कि मिडिल वेयर के थ्रू सब पुछ पास हो गया रही है उसके बाद जो रिक्वेस्ट वह प्रोसेस होगा और जो भी उस रिक्वेस्ट का रिस्पांस होगा सर्वर उसको वापस भेज देखा अगर मैं डाइ� उस फेज में बहुत सारे functions execute हो रहे होते हैं और जैसे ही सारा का सारा functions execute हो जाता है सारा का सारा middleware function execute हो जाता है तो फिर जो भी उस request का response बनेगा वो response server हमें दे देगा ऐसा समझते हैं चलो जी ये तो समझ में आगे बईया middleware बीच में कहीं न कहीं run करेगा अब एक example समझा दो note.js के उपर VS Code ओपन करता हूँ VS Code में ये हमारा project जिसमें हम लोग काम कर रहे थे बहुत लोगों थोड़ा context clear नहीं होगा अगर उन्होंने मेरा 7 lecture अभी तक नहीं देखा है तो हाइली रिकमेंडेड है प्लीज उसको देखिए अभी तक यह वीडियो एक्स्ट्रा डिमाइंड पर बनाया गया है ऑथेंटिकेशन के ऊपर तो यह सब्सक्राइब करें ठीक है अब एक चीज समझिए लेट सपोस हम लोगों को मिडिलवेयर इंप्लीमेंट करना है तो मिडिलवेयर इंप्लीमेंट करने के लिए हम लोगों को मिडिलवेयर फंसन मनाना पड़ेगा अब मिडिलवेयर फंसन क्या करेगा भाईया लेट सपोस हम क्या इंप्लीमेंट क तो उसमें लॉगिंग जरूर होता है लॉगिंग का क्या मतलब है कि किस डेट और टाइम पर कौन सा यूजर इंटर किया यह हिट किया उस रिजिस्टर्ड उस प्रेटिकुलर वेबसाइट पर और जनरली हम लोग उसको लॉग रिक्वेस्ट क्या था यह जनरल कंवेंशन है है ठीक है तो लॉगिंग करते हैं हम लॉगिंग कैसे डिफाइन कर सकते हैं हम लोग चाहिए कि किस टाइम पर कौन से यूआर एड हिट हुआ है हम लोग यह वाली चीजें लॉग करना चाहिए लॉग मतलब प्रिंट करना चाहिए अगर समझो ठीक है तो चलो मैंने काम किया मैंने यह हमारा सर्वर फाइल है ठीक है जी बहुत बढ़िया मैंने यहां पर एक मिडिलवेयर फंसन डिफाइन किया ठीक है मैंने बोला मिडिलवेयर फंसन ठीक है चलो जी अब मिडिलवेयर फंसन के हैं तो response and next, ठीक है, मैंने बोला console.log, ना अब हम चाहे ताइम प्रिंट करना, मैंने यहाँ backticks डाला, backticks में बतले हम क्या चाहते हैं, एक इस जगह पे time print हो, now request made to, ठीक है, and URL print हो, तो यहाँ पे URL के जगह हम जगह छोड़ दिया, time कैसे print करेंगे, हम तो time print करेंगे, जैसे कि new date and what I और यह हमारा function हो गया, यहाँ पर हम URL प्रिंट करना चाहिए कि कौन सा URL पर हिट हो रहा है, तो request.original.original.url, ठीक है, इस जगह प्रिंट होना चाहिए, अब जैसे कि log request है, ठीक है, अब मैंने यहाँ पर पास किया next, now middleware function हमेशा ध्यान रखना, एक next function को call करेगा, जिसका मतलब यह मारा मिडल वेयर फंसन डिफाइन हो गया अब हम चाहिए इस मिडल वेयर फंसन को यूज करने के लिए इस राउटर में ठीक है तो यह हमारा एंड पॉइंट हो गया ठीक है यह हमारा फंसन हो गया इसके बीच में हम क्या कर सकते हैं इस मिडल वेयर को पास कर सकते हैं लॉ पोस्टमेंट में हम क्या चाहते हैं कि हमारा पूरा का पूरा यह लॉग कंप्लीट हो जब भी हम किसी यूअरल को हिट करें तो हमारा लोकल लेट सपोस गोट गैट मैन्यू है ठीक है हम गैट मैन्यू पहले देख जा रहे डीवी का कनेक्शन का सेट अप है पर्सेसिंग फास्ट पहले इसमें चेक कर लेते हैं क्या दिक्कत है मैंने यहां पर हिट किया हां जी डाटा में मिल लॉक चेक करें तो क्या लॉक में टाइमिंग प्रिंट हुआ नहीं टाइमिंग प्रिंट होना चाहिए क्यों नहीं हुआ बिकॉज यह ऑफेंटिक यह मिडल वेयर हमने सिर्फ और सिर्फ किसके लिए लगाया है इस राउट के लिए लगाया है अगर सब्सक्राइब यह टाइमिंग प्रिंट होते हुए दिखेगा अच्छा इस टाइमिंग चाहिए ब्रैकेट में डाल देते हैं दिखने थोड़ा और सुंदर लगेगा यह चीज और समझ में भी आएगा ठीक है जी चलो अगर फिर मैंने फिर से हिट किया तो यह आपका टाइमिंग प्रिंट हो गया और रिक्वेस्ट मेट टू दिस यूआर एल लेट सपोस हम चाहे रहे हैं इस डीवी को थोड़ा कनेक्ट कर देते हैं और लोकल से सोड आइट फायदा क्या होगा थोड़ा सा प्रोसेसिंग फास्ट हो जाएगा ठीक है जी यह हमारा मोंगो डीवी लोकल यूआर एल से कंपास ऑन कर लेते हैं ठीक है कंपास ऑन किस टो कनेक्ट किया कनेक्ट अगर हो जाता है तो नेट्स गुड हांजी अब हम चाहते हैं यह तो यह किसी एक सिंगल राट हम चाहते हैं कि पूरे के पूरे पर संगल पर इंपलीमेंट करना चाहते हैं हां जी इवन जितने राट हम सब इंपलीमेंट करना चाहते तो ठीक है मैंने यहां से कट किया हटा दिया इसको ठीक है है मैंने बोला एप डॉट यूज जनरली मिडलवेर में इसी तरह से यूज करते हैं मैंने यहां पर कर दिया को सेमी कॉलर स्टार्ट हो गया हमारा सर्वर अगर हम लोग इसको हिट करें से हिट करने पर क्या होगा अस्ट मिलेटर ठीक है हां जी तो सी टाइमिंग प्रिंट हो गया एंड आपको स्लैस मैन्यू प्रिंट हो गया लेट्स अपोस्ट स्लैस मैन्यू स्लैस स्विट प्रिंट एंटर करते हैं ठीक है तो स्लैस मैन्यू स्लैस विट हो गया तो इस तरह से टाइमिंग वाइस हमें रहे हैं हां जी कमेंट कर देते हैं इसको यहां पर संबंध पर मैंने यहां पर पास कर दिया ठीक है अगर अब इसको पर संबंध करके देखते हैं हां जी तो स्लाइट स्वीट पर हमें मिलेगा अ हाँ, मिल गया, ठीक है, लेकिन क्या अगर slash person पे मिलेगा, person, मैंने अगर enter किया, तो person पे हमें कोई भी data, मतलब timing, logs, print होते हैं नहीं दिखेगा, generally जो logging होता है, वो पूरे को पूरे end point पे हम लगाते हैं, मैं क्या करूँगा, इस login को यहां से हटाऊंगा, ठीक है, and इसको लेट सबसे अगर हम इस next को comment कर दे, ठीक है comment कर दे, मतलब कि अब हमने next call ही नहीं किया, middleware function तो पुरा बनाया, सही से middleware function call भी होगा, run भी होगा, लेकिन उसके बाद next पे हमने call नहीं किया, jump नहीं किया, तो मैं response मिलेगा क्या, see, ऐसे कि मैंने यहाँ पे simple इस पे hit किया, तो है ठीक है अगर लेट सबसे हमने स्लैस मैन्यू हिट किया होता ठीक है सिर्फ लॉगिंग तो होगा स्लैस मैन्यू क्यों बिकॉस इस फंसन पर आया हां जी आया इस लाइन को रन किया हां जी रन किया लेकिन वह नेक्स्ट नहीं गया नेक्स्ट नहीं बाद इसमें हमेशा हमें नेक्स्ट फंसन को कॉल करना बहुत ही जरूरी है क्यों जरूरी है कि यह मैंने साफ-साफ मेंशन किया है कि इन एक्सप्रेस जेस द नेक्स्ट फंसन इज ए कॉल बैक अ that signals to express जैसे ही next function call होता है किसी middleware function के end में वो signal देता express JS को कि that the current middleware function is completed हमारा जो current middleware function जो run कर रहा था वो complete हो चुका है and it's time to move on the next middleware function or the router handler in the channel इसके बाद जैसे ही हमारा log request का हमारा middleware function run कर जाएगा उसके बाद हम directly menu item routes पे response दे रहा है and all ठीक है एक चीज समझो यहां पर जो app.use हम लोग करते हैं यह line express को बता रहा है कि यह middleware है सारे routes के लिए implement किया तुमको इसको चलाना ही पड़ेगा और middleware function देखो work कैसे करता है मैं थोड़ा से इसको zoom करूँ तो समझो client request है बीच में जितने भी middleware होंगे वो सारे line by line execute होंगे है ठीक है अगर मैं आपको एक मिडिलवेर इस टाइम दिखाओ तो कैसे वर्क करता है दो को एवरीथिंग इस मिडिलवेर जो बॉडी पार्सिंग होता है ऑफेंटिकेशन होता है राउटर होते हैं सी हमने यह पर राउटर बनाया था आपको यह आइए गरी, इस थोड़ डिटेल वीडियो हो गया है मिडिल वेर के विपर, आपको अभी भी डाउट नहीं होगा कि मिडिल वेर अक्शुली में होता क्या है, मिडिल वेर कब एक्जिक्यूट होता है, इसको कैसे हम लोग इनिशियेट करते हैं, अक्शुली कौन सा पार्ट क यह बिहाइंड सीन हमें पता नहीं चल रहा होता है तो यह मैंने लिखा भी है कि जो रिक्वेस्ट रिस्पॉन्स साइकल होता है ना उसके बीच में हम लोग एक्स्ट्रा फ्रंट अगर ऐड करना है तो वह मिडलवेयर करेगा ठीक है जैसे कि लॉगिंग हो गया भी जो से नमप्लीमेंट किया और थिंग एड क्योंकि everything आजकल third party middleware हर चीज में available होता है even हम लोग अभी authentication भी करेंगे तो वो भी third party middleware के function के थ्रू ही करेंगे अगर आपको middleware समझ नहीं आए तो please comment करके जरूर mention करो कि भाई middleware अच्छा से clear हो गया अब कभी भी life में middleware problem नहीं आएगा अब बात करते हैं सबसे important concept authentication and authorization क्या होता है बात करते है authentication और authorization समझते हैं एक simple सा scenario समझो पहले हमने जो hotel का management system बनाया है उसमें हमने एक person data define किया है मैन्यू डेटा डिफाइन किया है, मैन्यू स्कीमा डिफाइन किया है ओथेंटिकेशन और ओथरेशन में अंतर ध्यानते समझ लो लाइफ में कभी नहीं भूलो के लेको ध्यानते समझ लो यार कि ओथेंटिकेशन और ओथरेशन हमेशा सुनने में सिमिलर लगता है hotel में तीन तरह की चीज़े दे, waiter था, staff था और हमारे पास manager था लेट सपोस अगर कोई भी बंदा तीनों में से claim करता है कि हमें hotel के अंदर जाने दो तो उनको एक username और password लगेगा ठीक है यह तो होगा ऑथेंटिकेशन अगर मैं जाता हूं मैं कुछ भी नहीं हो होटल में कुछ भी मैं जाने जानता तो मुझे अगर उस होटल के निर्दर जाना है तो अगर मेरे पास यूजर में पासवर्ड नहीं होगा तो मुझे नहीं जाने दिया जाएगा ठीक है तो पता लगाने के लिए कि exactly ये जो person है, वो hotel के member का part है कि नहीं, हम लोग उसको authentication कहते हैं. Let's suppose हमने authenticate कर दिया, हम अब hotel के अंदर घुश चुके हैं, मेरा जो role है right now वो chef है, ठीक है? और chef जो है, उसके पास बहुत सारे roles होंगे, privilege होंगे, जिसको हम लोग सक्तियां कहते हैं, ठीक है?
अब जो chef है, वो hotel का menu item में तो फिर बदल कर सकता है, उसमें update कर सकता है, कुछ menu add कर सकता है, लेकिन वो manager का salary नहीं देख सकता है. तो यहाँ पर कहने का यह मतलब है कि authentication के just बाद हम लेयर of authorization लगाते हैं मतलब कि role based access इसको हम लोग कहते हैं मतलब समझ में आया है ओटल के अंदर घुसने के लिए तीनों को तो username और password लगेगा सेफ को भी लगेगा, waiter को भी लगेगा and manager को भी लगेगा लेकिन सेफ वह manager के कमरा में नहीं बैठ सकता क्यों? because वहाँ पर वह authorized नहीं है visitors are not authorized to allowed here वह अपनी विशेष नहीं दिया जा रहा है कि यहां पर जा सकते हैं लेकिन ऐसे बहुत सारे रोल्स होंगे मैनेजर सुनकर ऊपर के बहुत अच्छे विशेष नहीं दिया जा रहा है कि यहां पर जा सकते हैं लेकिन ऐसे बहुत सारे रोल्स होंगे मैनेजर सुनकर ऊपर के बहुत अच्छे एक लिमिटेड एक्सेस दिया गया है उसको उस एक्सेस को मुझे ऑथराइजेशन कहते हैं ऑथेंटिकेशन मतलब कि हम लोग उसको ऑथेंटिकेट कर रहे हैं आप भाईया तुम जाओ अंदर लिमिट ऑथराइजेशन दिया गया है तुमको एक लिमिट रोल्स दिया गया है कि पहले code में authentication implement होता है कि authorization implement होता है आइयो आपने सोचा होगा, comment भी किया होगा यार, video को pause करके सबसे पहले जो code में implement होगा, वो authentication implement होगा, then authorization implement होगा because जब तक कोई भी बन्दा, कोई भी व्यक्ति, उस hotel का part नहीं है, तो उसको authorization देने का मतलब नहीं है रास्ता चलते आदमी को नहीं बोल सकते कि तुम इस company के manager हो, right? पहले तो यह तो देखना पड़ेगा न, कि वो आदमी actually में उस company से belong करता है कि न तो पहले मुझे उसको authenticate करेंगे, हाँ जी, यह valid बन्दा है नो मेटर बॉट सफ है वेटर है अ मैनेजर है कोई भी है ठीक है अंदर आगे फिर हम लोग बोलेंगे अच्छा यह बंदा इस कैटेगरी के मैनेजर लेबल कर हम लोग इसको कंपनी का मालिक बना देते हैं वह टेपर थेंग इट इज यार passport basically क्या करता है वो check करता है credentials को कि कोई बन्दा अगर login कर रहा है हमारे system में हमारे system में अगर वो आ रहा है ये किसी end point वो किसी API को देखना चाह रहा है तो वो username पासवर्ट तो देगा तो क्या वो username पासवर्ट सही है कि नहीं है before you can determine that what someone is allowed to do you need to know who they are इसका मजदर कि पहले जानो तो उस कंपनी का बंदा है विकिनी इससे पहले तुम किसी को ऑथेशन नहीं दे सकते राइट तो चलिए जी ना एक मैंने अगर यह चाला लिखा है कि विल इंप्लीमेंट ऑथेंटिकेशन एजे मिडल वेयर फंसर एक्सैक्टली सोडेट राउट विल बी अब देखो authentication बोले तो हम लोग क्या करते हैं किसी भी user को authenticate करते verify करते हैं with the help of username and password generally हम लोग username and password के जरी हैं ही किसी भी वेक्ति को users को verify करते हैं ठीक है passport क्या करता है किसी भी user को verification process है जिसको authentication process करते हैं उसको काफी easy कर दिया है या developers के लिए खास कर passport शच में authentication को इतना आसान बना दिया है कि वो बहुत सारी pre-built strategies देता है आपको pre-built strategies बोले तो मतलब कि किस तरह से आप यूजर को ऑथेंटिकेट करना चाहते हैं जनरली अगर आप यूजर नेम और पासपोर्ट के जरीए ऑथेंटिकेट करना चाहते हैं तो हम लोग उसको लोकल स्ट्रेटीजी कहते हैं या फिर आप किसी सोचल मीडिया के थ्रू लॉगिन करना चाहते हैं जैसे कि बहुत बार ठीक है पासपोर्ट को मुझे जैसे मिडलवेर इंप्लीमेंट करते हैं क्यों बिकॉल हम लोग चाहते हैं कि उसको रिक्वेस्ट को सर्वर से पहुंचने से पहले हम उस रिक्वेस्ट को ऑथेंटिकेट कर लें कि एग्जैक्टली में जो यह यूजर है इस एपीआई को यह एंडपॉइंट ऑप्शन करना चाहता है वह उसके लायक भी है कि नहीं मतलब कि उसको हम इस पर कौन सब्सक्राइब करें और अभी इस पर कोई बात नहीं करते हैं अब बड़ा सिंपल है हम लोग पासपोर्ट को इंस्टॉल करना काम करना स्टार्ट करते हैं पासपोर्ट को इंस्टॉल करने के लिए दो चीज होगा पहला आपको पासपोर्ट पासपोर्ट लोकल क्यों पासपोर्ट लोकल क्यों इस स्ट्रेटीजी को यूज करना चाहते हैं जनरली इस स्ट्रेटीजी को हम दूसरा नाम से कहते हैं यूजर नेम एंड पासवर्ड स्ट्रेटीजी मतलब हम लोग चाहते हैं कि यूजर नेम और पासवर्ड के जरिए किसी भी यूजर को हम लोग अफिंडिकेट करेंगे ठीक है मेरा पासपोर्ट लोकल दोनों को दोनों इंस्टॉल हो गया हां चीज बहुत बढ़िया अब हम चाहे इसको यहां पर कोड को इंप्लीमेंट करने के लिए ठीक है जिस मिडली फ्रेंड को क्या करें डादे की रहने दे दोनों पासपोर्ट को इंप्लीमेंट कर लेते हैं यहां पर कॉल कर लेते हैं ठीक है तो मैंने यहां पर क्या किया क इसको रिक्वायर पासपोर्ट हां जी नाव कॉंस्ट लोकल स्ट्रैटेजी इस इक्वाल टो रिक्वायर पासपोर्ट लोकल डॉट स्ट्रैटेजी पासपोर्ट लोकल पासप जो कि specially designed ही किया गया है username and password based authentication को implement करने के लिए अब यहाँ पर एक चीज समझा हूँ बार कह रहे हैं कि username and password के जरीए हम उठिनिकेट करेंगे हाँ जी बहुत बढ़िया है लेकिन जो passport local strategy होता है ना उसको username and password extract कहां से करेगा वो generally request.body से username and password को extract करता है एक काफी अच्छा common practice है कि generally हम जब ही किसी route को access करते हैं खासकर वो route authenticated है मतलब कि उसमें username and password लगेगा उस राउट में यूजर नेम और पासवर्ड भी भेजते हैं इसका फायदा क्या होता है कि जो पासवर्ट लोकल स्टाटेजी है वो request.body से यूजर नेम और पासवर्ड पिक कर लेता है और वेरिफाई कर लेता है कि हाँ जी माल मसाला सही है ये बंदा इसी कंपनी का है इसको authentication दे दो हम लोग अपने system में store करते हैं जब भी कोई भी company अपने person का जब record बनाता है या data बनाता है तो उस person के record में वो उस ने पासवर्ड भी स्टोर करता है क्या हमने अपनी स्कीमा में पर संगीत में उस ने पासवर्ड बनाया है नहीं जी एकदम नहीं बनाया तो मैं बनाना पड़ेगा हमने पर संगीत में खोला हां जी पर संगीत में पर संगीत का नाम स्टोर कर रहे हैं एज वर्क कैटेगरी क्या है उसका मोबाइल नंबर ईमेल एड्रेस सैलरी स्टोर कर रहे हैं लेकिन हमारे system का है कि नहीं तो user name और password से ही हम अपने पासवर्ड क्रिएट करेंगे एकदम true है अब जो भी बन्ना user name और password क्रिएट करेगा हम उसको सेव कर देंगे तो सेव करने के लिए हम एक अलग column बनाएंगे हम लोग कहेंगे username ठीक है और आपको यह रिक्वाइड है हां जी रिक्वाइड ट्रू है इसका टाइप क्या है टाइप स्ट्रिंग चलिए से मुझे तरह पासवर्ड लगेगा पासवर्ड ठीक है मैंने यहां पर बोला कि रिक्वाइड ट्रू है हां जी ट्र बहुत बढ़िया हमने यहां पर यूजर नेम और पासवर्ड को ऐड कर दिया बहुत ही बढ़िया अब हमारे सिस्टम में जो भी डाटा सेफ करेंगे उसमें यूजर नेम और पासवर्ड भी जरूरी होगा भाईया लेकिन हमारे अभी तक पुराने सिस्टम में तो भी यूजर नेम और पासवर्ड भी डाटा रिकॉर्ड की हैं तो यह एकदम वैलिड नहीं है हमने तो पुराने सिस्टम में डाटा रिकॉर्ड की हैं उसमें तो यह एकदम वैलिड नहीं है हमने तो पुराने सिस्टम में डाटा रिकॉर्ड की हैं उसमें जाता है वह नहीं है तो हम दिए सिस्टम बिल्ड कर रहे हैं तो एक बाद जब रॉबर्ट सिस्टम बिल्ड है तब हम लोग जाकर लाइफ करते हैं चलिए अब हम लोग अपने लोकल स्ट्रेटेजी को यह पासपोर्ट लोकल जो मॉडियो है उसको लोग लोकल स्ट्रेटेजी ठीक है यह फंसन है इसके दूंगे अशिंख फंसन बनाएंगे अशिंख और पास करेंगे क्या यूजर ने ठीक है पासवर्ड एंड एक और कॉलबैक फंसन होता है जो कि पासपोर्ट प्रोवाइड करता है उसको नोट डन कहते हैं नाओ अब वो परिमेटर एक्सपेक्ट करता है तीन चीजें यूजरनेम, पासवर्ड और डन एक कॉलबैक फंसन है ठीक है और ये जो फंसन है आपसे इसी सीक्वेंस में एक्सपेक्ट करता है पहले आप यूजरनेम लिखे, डन पासवर्ड लिखे, डन कॉलबैक लिखे और डन जो कॉलबैक है उसको always last parameter हम लिखना चाहते हैं there is might chance पासवर्ड जेस आपका properly work ना करे इसलिए ये एक general convention है और हम लोग इसी convention में चलना चाहिए कि ये तीन चीज़े expect करता है username, password and done आप इसका नाम change कर सकते थे, इसको user लिख सकते थे, या email लिख सकते थे, या इसको password का pwd लिख सकते थे, that's fine, लेकिन convention यह है कि पहले पर username, password and then done callback, अब देखो generally अगर हम लोग बात करें verification function का, तो verification function क्या हो सकता है, कि हम लोग इसमें क्या करेंगे, जो username हम लोगों मिल रहा ह जो उन्होंने password दिया है वो password भी same है exactly जो database में save है अग��� save नहीं same नहीं होगा तो हम लोग authentication fail कर देंगे same अगर होगा तो हम लोग पास कर देंगे कि हां ठीक है यह बुट तो अब देखो हम लोग क्या करना चाहिए इसको इंप्लीमेंट करना चाहिए मैं उसको बड़ा करता हूं मैंने यह पर लिखा console.log ठीक है और मैंने यह पर लिखा रिसीव क्रिडेंसियल ठीक है रिसीव क्रिडेंसियल में इसे कि मैं लेट सब्सक्राइब पासवर्ड हम लोगों मिल रहा है कि कॉन्स्ट य पर सब्सक्राइब कर दो यहां पर य person right is equal to require and slash models person ठीक है चलो अब हम लोग यहाँ पर आते हैं क्या if let's suppose not user हम लोगों नहीं मिला ठीक है हो सकता है कि user null आ गया हम लोग तो expect कर रहे थे लेकिन इस बेसिस में यूजर मिल जाएगा लेकिन लेट्स पोस्ट यूजर नहीं मिला तो मैं यह करेंगे रिटर्न डन कॉल करेंगे ठीक है अब डन जो है वह तीन परामीटर लेता है यहां पर समझिए सिस्टों से पूरा डिटेल लिख दिया है आपको जरूरत है हम लोग भी एडवलपर हम लोग लाइफ में जब भी वह चीजें देखते हैं सीखते हैं हम इस तरह सीखते हैं देखकर बार-बार रिवाइस करते रहते हैं तब जाकर हमें ध्यान में रहता है कि यह चीजें क्या है में मुद्दा है पर यहां पर लिखा है वह सिगनल कि हमारा ऑफिंट के सब्सक्राइब कर दो प्रेजेंट में हमने चेक कर लिया अभी तीन परामेटर लेता है एरर यूजर और इनफो ठीक है अगर लेट सपोस यह सक्सेसफुल हो गया तो अरेज़ जगह नल डाल देंगे और यूजर के जगह यूजर डाल देंगे लेट सबसे यह फेल कर जाता लोगों यहाँ पर यूजर नेम नहीं मिला तो वो तो मैसेज सेंट कर दोए कि इनकरेक्ट यूजर नेम लेट सपोस हमें यूजर नेम मिल जाता है अब पासवर्ड की बारी आती है मैंने लिखा पासवर्ड, const एक वैरियल बनाया, const is match, password match, ठीक है अब हमने यहाँ पर बोला कि अगर पासवर्ड match कर गया क्या, अब किस से compare करेंगे भाईया जो पासवर्ड हमें मिल रहा है और जो पासवर्ड database में store है तो यूजर के पास भी तो पासवर्ड होगा, अगर मैं इस यूजर पर जाओं, see, तो you see इस यूजर को अगर मिला होगा डाटा पासवर्ड नाम को कॉलम है हां जी है मैंने यहां पर लिखा यूजर डॉट पासवर्ड इज इक्वल टू अगर पासवर्ड है ठीक है तो रिटर्न कर दो ट्रू एल्स फॉर्स तो इफ लेट्स पोस्ट पासवर्ड मैच हो है तो फिर समय क्या कर देंगे अर्थ रो कर देंगे हां जी तो रिटर्न डन एंड कॉल बैक है हां जी कॉल बैक है मैंने इस पंसर को नल false user तो नहीं मिला और एक message print कर देंगे कि incorrect password यह आपका पूरा का पूरा verification function यहाँ पर complete हो गया अब आते है catch में let's suppose बीच में कुछ भी error आ जाता है मैं simple से return कर दिया done error ठीक है that's it इतना काफी है जो हम लोग यहाँ पर done function call कर रहे हैं basically callback function है बस यह आपको एक तरह का सिगनल दे रहा है, पासपोर्ट को, कि भाईया, हमारा फैरिफिकेशन वाला काम हो गया, तुम आगे देख लो, हमने फैरिफिकेशन करके बता दिया, अगर incorrect username हो तो हमने वो बता दिया, पासपोर्ट incorrect हो तो हमने वो बता दिया, अगर हमने user मिल गया तो हम अब यहां पर क्लाइन लिखते हैं एप डॉट यूज पासपोर्ट डॉट इनिसिलाइज ठीक है यह पर लिख दिया अब यह पासपोर्ट करना है फॉरवर्ड स्लैस मतलब कि अगर मैं बात करूं स्लैस अगर मैं बात करता हूं इस यूजर के ठीक है अच्छा सर्वर जिलवेर फंसन किस जगह पर अच्छा हमने यहां पर एप रोट यूज नहीं यह पासपोर्ट रोट यूज होगा ठीक है जिसके अर्रेड क्या रहा है कि कर नोट ऑफरेड पर समाडू वन्स कंपाइल चेवर कंपाइल हो चुका है उसको यहां पर क्या असिंग है प्लेट यहां वेट आएगा इसको अवेट कर देते हैं अधर गया क्या नहीं तो इट्लाइट अगर नोट ऑफरेड पर समाडू वन्स कंपाइ है ठीक है तो मुझे लग रहा है कि यहां पर पर्सन मॉडल इंपोर्ट किया ना वह नहीं हो गया जिसको अगर हटाते हैं तो हमारा कंप्लीटली यह चीजें रन कर रहा है ठीक है सर्वर हमारा अक्टिव हो गया इटाबेस भी कनेक्टेड है और इन्टिगेट मतलब कि इसको यूज करने के लिए हमें यूजर नमर पासपोर्ट का जरूरत पड़ेगा मैंने इस कोड में गया इसका कोड कहां लिखा है जिस जगह पर लिखा है मैंने यहाँ पर कॉमा लगाया इस middleware को यूज करते हैं वो ध्यान से समझना मै और इसके अंदर क्या पास करेंगे सी इसके अंदर पहले पास करेंगे स्ट्रैटेजी की कौन से स्ट्रैटेजी हम लोग यूज कर रहे हैं हम लोग यूज कर रहे हैं लोकल स्ट्रैटेजी देखने पास करेंगे परमेटर इसको नोटेते सेशन हम लोग इसके पर नहीं कर रहे हैं सब्सक्राइब करता है अब मैं पात करता हूं अब मैं जगह पर गया मैं इसको अगर हिट किया हमें क्या मिल रहा है बैड रिक्वेस्ट यह मैं बैड रिक्वेस्ट क्यों मिल रहा है बिकॉज जिस तरह से यह एपिआई एक्सपेक्ट अगर मैं इसको शोटा करूँ और मैं टाइप में गया हूँ यहां मैं सर्च सिलेक्ट करता हूँ basic auth ठीक है तो हम लोग user name में डालते हैं what लेकिन उससे पहले हम एक पहले ऐसा data बनाना पड़ेगा एक ऐसा set बनाना पड़ेगा user का जिसमें कि already user number password present हो तो सबसे पहले मैं क्या चलो इसको अगर कट करते हैं डिजाइन कर लेते हैं ब्यूटिफाई कर लिया सैलरी आ गया हां जी मैंने कहा यूजर नेम फोटोप बड़ा कर लेते हैं इसको कोई दिक्कत नहीं है यूजर नेम डाल दिया आईएएम प्रिंस ठीक है और मैंने पासवर्ड में डाल दी लिया पासवर्ड में डाल दिया पासवर्ड कोई दिक्कत नहीं यहां तक हां जी अब लेट्स सपोस मुझे इसको हिट करते हैं अगर जैसे इसको हिट करें डाटाबेस में स्टोर हो जाएगा हां जी स्टोर हो गया एरर क्या गया इंटरनल सर्वर एरर और यह क्यों आया बिकॉस अच्छा क्योंकि हमें इमेल का डूप्लिकेट मिल गया तो मैं एक इमेल अलग टेस्ट ठीक है अब मैं इसको सेंट करता हूं सीडियो पर स्टोर हो गया अगर मोंगो टीवी में जाते हैं इसको आट यहां पर रिकॉर्ड है इसी अगर इसको रिफ्रेस करेंगे नहीं हो जाएगा और हमें डाटा मिल गया यह यूजर नेम यह आई प्रिंस पासवर्ड स्टोर हो चुका है चलिए जी अब हम जाते हैं इस वाले रॉट पर मैंने यूजर नेम डाल हमारे कोड लिखने में हमने यहां पर सेशन को फॉल्स मार्क कर रखा है देखो इन जनरल जो लोकर स्ट्रैटेजी यहां उसको इंप्लीमेंट किया गया सेशन के साथ इंप्लीमेंट करने के लिए लेकिन हमने यहां पर पाट बाइट सिखाने का सोचा है तो इसलिए इस पर उस यूजर में पासवर्ड नहीं जाता एडोन वाइट लेकिन यहां पर मैंने पर इसमें गए मैंने आपको लिखा यूजर ने पर यूजर ने आपको लिखा person is equal to what I say require forward slash models models के अंदर हमारा क्या है p capital करते person ठीक है अगर अब हम इसको run करते हैं अगर अब मैंने यहाँ पर send किया तो मैं data क्या मिला welcome to our hotel that pretty nice मतलब कि यहाँ हमारा route है वो authenticate हो चुका है इस राट को एक्सेस करने के लिए अगर लेट सबस्क्राइब करना है और मैं डालेट लेकर हिट करता हूं तो बैट रिक्वेस्ट परिवार पासवर्ड पासपुर्ट लोकल क्या करता है यह लोकल स्ट्रैटीजी क्या करता है रिक्वेस्ट बॉडी से यूजर पासवर और उसने क्या किया मैच किया लेट्सपॉर्ट गलत डाल दिया अब मैंने हिट किया तो आप राइस का एक्सेस आईएस को फॉर नॉट वन कहते हैं हम लोग बदल कि यह और अधर आईएस है मतलब कि आप इसको एक्सेस नहीं कर सकते बिकॉट पासवर्ड डाला है अगर मैं आप सेम चीज करता है और फिर से सी हिट किया नथिंग सॉरी देंटर वेलकम टो ऑफिस अब लेट्स पॉज यहां पर इस लाइज यह पूरा कपड़ा इतना बड़ा चीज तो काम करें यहां पर कट करो ठीक है एंड और मैंने यहाँ एक वरिवल बनाया कॉंस्ट लोकल और मिडिल वेयर मतलब कि लोकल इस्ट्राइटीजी का यूज कर रहे हैं लोकल ऑथनिकेशन के यूज कर रहे हैं एक मिडिल वेयर और इस मिडिल वेयर को हमने यहाँ पर पास कर दिया अब क्या वर्क करेगा हां जी क्यों यहां तक I hope कोई भी दिक्कत नहीं होगा भाईया मेरा मन कर रहा है जितने भी routes हैं मतलब कि जितने भी person या menu related route हैं सब में authentication लगा देते हैं मैंने इस देखा को हटाया यहाँ पे ठीक है अब मैंने बोला कि menu item में जाते हैं और यहाँ पे authentication का route लगा देते हैं अब menu से related जितने भी हमारे पास routes आएंगे सब को access करने के लिए हमें password का जरूरत पड़ेगा let's suppose मैंने use करता हूँ perfectly work करेंगा authentication हटा दिया person चाहिए वर्क करेगा हां जी वर्क करेगा प्रेटी पर आ जाते हैं यह रॉ पर आ जाते हैं वर्ट एवर थिंग इज वेस्ट अगर हम मैन्यू पर आते हैं क्या वर्क करेगा नहीं बैट रिक्वेस्ट क्वेरी परिमेटर क्या डालना पड़ेगा मैंने यह पेस्ट किया शेट मैंने पेस्ट किया नहीं किया ठीक है चलो जी फिर से लिख लेते हैं यूजर नेम क्या है हमारा यूजर नेम है आई नेम प्रिंस एंड पासवर्ड क्या है पासवर्ड है हमारा पासवर्ड अब इसको अगर हिट करते हैं तो यह में डाटा मिल गया तो इस दो तो आपको अपने प्रश्न पर अपने प्र अब हम एक काम करते हैं बड़ा भाईया server file ना गंदा हो गया हम server file को बड़ा clean रखना चाहते हैं in fact हर लोग clean रखना चाहते हैं मैं यहाँ पर एक काम करता हूँ एक file बनाता हूँ एक file बनाता हूँ auth.js auth.js जो कि जितने भी authentication related चीजें होंगी मैंने अब implement किया जाइटली इसको paste किया यहाँ पर मैं server.js पर गया मैंने इस local strategies को यहाँ पर हटाया इस पासपोर्ट की जरूरत है, हाँ जी पासपोर्ट की जरूरत है, और क्या हटा सकते हैं हम लोग, इस person को भी हटा सकते हैं, हाँ जी person को भी हटा सकते हैं, और local strategy को भी हटा सकते हैं, कोई दिक्कत, इस दो चीज को हमने हटा दिया, और क्या हटा सकते हैं, ये तो दूसरा middleware आज और जैसे पर हां जी इस पर आ गए तो हमने क्या कि मॉडल टो एक्सपोर्ट करके पासपोर्ट कर दी अब पासपोर्ट ना बेसिकली यह पासपोर्ट नहीं है यार इस पासपोर्ट को रिक्वायर करना पड़ेगा और डॉट बस डन इस ऑफ फाइल से जो भी हमें पासपोर्ट मिल रहा है यहां पर कमा आएगा उस पासपोर्ट को यूज कर रहे हैं यहां पर इस पासपोर्ट को पासपोर्ट को ऑफ इनटिकेट भी कर रहे हैं और यह और लोगों और दिल वेयर को यहां पर यूज किया डन और डॉट जैस में आ गए और डॉट जस में हमने क्या किया नथिंग फंसन इंपोर्ट किया पर्सन मॉडल इंपोर्ट किया ठीक है सेम चीज कुछ भी इसमें अलग नहीं किया डन आईएस वियरडन अब हम लोग क्या करते इसको चेक करते हैं भाइया तो क्या इसमें जरूरत है इस दोनों एक्टिव हो जाएगा मैंने आप एक्सेंट किया हां जी अब हमें जितने भी स्विट से डाटेट डाटा है प्रेव्यू करते हैं तो हम लोगों मिलने लगेगा सेम उसी तरह पर संक्री कोई भी दिक्कत नहीं है अगर आपको पर संक्री एक्सेस करना है लोगिकली उतने अच्छा साउंड नहीं कर रहा है, काम करते हैं परसन पर लगा देते हैं मतलब मुझे ऐसा लग रहा है कि परसन पर, मैन्यू तो कोई भी देखे है होटल है तो फिर सीकरेट की स्टीज का चाहिए होगा नहीं देख सकते एड किया देख सकते हो चलिए यहां तो अच्छे समझ में आ गया लेकिन आप यहां पर चीज नोटिस किया जो मैं सबसे घटिया काम किया घटिया काम क्या किया है सी हमने यहां पर पासवर्ड टाइप टीस टोर कर दिया पासवर्ड लेट्सपोस अगर लेटसपोस कल की डाटर में क्या हो सकता है हमारे साथ कि इसी हमारा हमने बहुत सा एप्लेकेशन नाया एलिस ने पासवर्ड कीवर्ट डाला बाव पर पासवर्ड डाला ठीक है तो हमने डाटाबेस में तो एजटिस पर पासवर्ड के जगह पासवर्ड डाल दिया कल के टाइम पर अगर है कर हिट एंड ट्राइल मदद से कीवर्टी है हेलो कांड ऑफ पासवर्ड अगर ट्राइ करता है अगर हमारा सिस्टम है करता है तो हमारे जितने भी कस्टमर्स है हमारे जितने परसंस का डाटा है सब किसी का लॉगिंग क् टेक्स्ट में स्टोर नहीं करते हैं तो इस टोरिंग प्लेट पासवर्ड इस नॉट एस एक्यॉर प्रैक्टिस कभी प्रैक्टिस नहीं सबसे खराब काम यह बस अभी तक मैंने समझाने के लिए किया आपको पहले पिछल समझा पाऊं कि ऑफेंटिकेशन क्या है और थोड़ा सा साल डाल देते हैं साल मतलब नमक डाल देते हैं यह एक्सेप्ट नमक है यह मुझे सब कंसर्ट बड़ा अजीव लगता था स्टार्टिंग विर्ड लगता था कि सॉल्ट क्या होता है शिंघ क्या होता है एंड लॉट्स आप थिंग्स अगर नपीएम इंस्टॉल अच्छी यह नोटिस किया हम लॉग में भी ना सी लॉग में हम क्या कर रहे हैं पासवर्ड को प्रिंट कर रहे हैं इसलिए आप इसको कमेंट कर देंगे यह अच्छा चीज नहीं है तो कमेंट कर देंगे तो हमारा लॉग में कभी पीछा पासवर्ड एंड यूजर ने प्रेंट नहीं होगा तो अल्टिमेटली अगर हमारे कोड के सर्वर पर यह लॉग्स प्रेंट हो तो यूजर ने पासवर्ड प्रेंट हो रहा है तो कोई भी बंदा कंपनी का जिसके पास यह सर्वर्स का एक्सेस होगा वह है इसलिए हम लोग बीक्रिप्ट यूज करेंगे हमने बलनाम लिया एंपीम आई इंस्टॉल बी क्रिप्ट ठीक है मानस से हमने बीक्रिप्ट को सेव कर लिया अगर आपना पैकेज टॉट जेसन चेक करेंगे ना सी अगर पैकेज टॉट जेसन में जाते हैं तो कोई अगर है कर टाइप कि डाटाबेस पर डाटाबेस का सारा यूजर ने पासवर्ड सला गया ठीक है तो बीक्रिप्ट लाइवरी जम्म यूज करेंगे बीक्रिप्ट क्या करता है पहले इस डाइग्राम को समझना ध्यान से बीक्रिप्ट क्या करता है कि जो भी पासवर्ड है हमेशा में पासवर्ड एबिस टीडी 12345 जो भी पासवर्ड उसको एक तरह का है फंसन में डालता पासवर्ड है ना उसको एक है फंसन में डालेगा और वह कुछ तो रैंडम सा इस ट्रिंग जनरेट करके देगा वह उसी को पता है कि ऐसा कर रहा है कि हमें नहीं पता और बीक्रिप्ट यह काम कर देता है अब यहां पर कॉन्सेप्ट आता है सॉल्ट का भी सॉल्ट क्या होता है सिंग्स ऑल टिक्स दो जैसे कि यूजर पासवर्ड है एप्पल ठीक है सॉल्ट मतलब नमक हमने क्या बोला अपने एंड से ठीक है, salt को हमने add किया, अब यह जो hashing algorithm वो क्या करेगा, एक random सा hash string generate करके देगा, जिसको हम लोग has password कहते हैं, उसी password के अंदर वो salt भी छुपा के रखता है, कैसे रखता है, मुझे नहीं पता, ना आपको पता चलेगा, यह hashing function करता है, ठीक है, यह basically क्या किया, जो भी password था, random सा string generate किया जो यहां पर yellow color का आपको दिख रहा है ठीक है इसी जो yellow color का string है ना मतलब yellow background पर जो black string है ना random सा string उस random string में हमारा has password भी है और salt भी है और यह कैसे पढ़ेगा इसको क्या पढ़ेगा यह जानेगा हमें इससे लिए नदर नहीं है और हम इसको store करते हैं अपने database में नाओ अब जैसे कि user तो बहुत भूला भाला है बेचारा उसमें तो simple डाल दिया username डाल दिया अपना password डाल दिया उसे तो यह सब नहीं पता कि background में database में किस तरह से हमारा password modify हो रहा है और change हो रहा है तो जब भी कोई भी password related motive changes होता है database में तो हम लोग क्या करते हैं password को save करने से पहले उसको hash कर देते हैं तो जो ह���ारा Mongoose schema है वो क्या करता है pre नाम का middleware हमें provide करता है वो क्या बोलता है जब भी save operation होने वाला होगा db में तो database में जब भी हम लोग किसी भी records को यो documents को हम लोग save करने जा रहे हैं उससे just पहले हम यह सारे changes कर देंगे password में और उसको change करके डाल देंगे ठीक है तो चलो यार इस function को हम लोग implement करते हैं लेकिन ध्यान रख हम लोग कर क्या रहे है कि database में just store करने से पहले हम लोग password modification करेंगे और password को hash कर देंगे ठीक है with the help of bcrypt const bcrypt is equal to require bcrypt ठीक है जी बहुत बढ़िया मैंने यहाँ पर क्या बोला person schema.pre ठीक है, pre जो कि एक middle fare function है वो cup trigger होगा, जब हम लोग save operation perform करने वाले होगे तब, हम लोग यहाँ पर लिखेंगे async function और pass करेंगे callback next, ठीक है, यह next callback function क्या बता रहा होगा, person schema को, mongoose को, कि भाईया, अब तुम जाकर db में सेफ कर दो कोई दिक्कत नहीं है ठीक है तो next को तो हम लोग को कॉल करना ही करना है कोई दिक्कत यहां तक नहीं उससे पहले यह सारा code हम लोग इसके अंदर डालते हैं भाईया try catch के अंदर ठीक है इसके अंदर डाल दी error कोई दिक्कत नहीं और यहां प प्रोसीड करो और डीवी में जाकर सेव कर दो अब देखो यहां पर ध्यान समझो हम लोग यह कब करेंगे हम लोग जब हम लोग को पासवर्ड को है पासवर्ड जनरेट जब हम लोग को जनरेट करने जनरेशन करना होगा ठीक है तो हम लोग इस करेंगे अब चाहिए वह रिकॉर्ड चाहिए किस रिकॉर्ड में करने वाले मैंने पर परसन नाम का रिकॉर्ड बनाया विच इज इक्वल टू इस मतलब कि जब भी यह सेव ऑपरेशन परफॉर्म होने वाला होगा कि किसी भी record के लिए इस person schema के अंदर, this यहाँ पे यही represent कर रहा है कि हम लोग हर record के लिए जब भी safe operation perform करने वाले होंगे, तो उससे पहले pre-medialware call होगा, वो सारा data हम लोग person में store कर रहे हैं, ठीक है, अब हमने यहाँ पे क्या check लगाया, ध्यान जा समझना, has the password only if it has been modified or it's new record, अब दोहों platform पे hotel application में बिल्कुल नया हूँ, मैं इसमें register करना चाहूँ, अपना एक user तो मैंने यूजर नेम पासवर्ड सब कुछ दिया तो मेरा नया रिकॉर्ड बनने जा रहा है ठीक है तो नया रिकॉर्ड बनने जाएगा तो बट ऑफिस से पासवर्ड हम प्लेन देंगे तो वो उसको हैस में स्टोर करके रख देगा बहुत बढ़िया लेकिन लेट सबसे प चैनल अपडेट करना चाहते हैं तो पासवर्ड को है शुक्र पासवर्ड ऑलरेडी हमारा है तो यहां पर हमारे पास काफी अच्छा फंसन है कि इफ परसन डॉट इज मॉडिफाइड ठीक है और फिल्ड डाल रहे हैं पासवर्ड तब लेट सपोस अगर वो नया रिकॉर्ड है तो बट ऑफियस है भाई मॉडिफाई कर रहे हैं, kind of छेड़ रहे हैं, तो ये क्या return करेगा?
True return करेगा, तो जैसे ये True return करेगा, तो True का उल्टा हो गया False, जब ये False हो गया, तो हम लोग स्किप नहीं करेंगे, ठीक है? लेट सपोस हमारे पास अलरेड़ी एक परसन है, जो की अपना सैलरी अपडेट करने जा रहा है, तो वो क्या, ये function क्या return करेगा इस केस में? क्या हम लोग उसका password चेंज कर रहे हैं?
क्या नहीं भाई? password वही है, सैलरी बस चेंज कर रहे हैं, तो ये return प्रति आपके पासवर्ड चेंज करना चाहिए और लगाएं वह यूजर डाइबेस में शोर्ड है तो हम लोग क्या देख है कि आप पासवर्ड चेंज कर रहे हैं तो यह ट्रू रिटर्न करेगा तो इसका उल्टा हो गया फॉल्स जब यह फॉल्स ठीक है और हम यहाँ पास कर दिया 10 as a parameter 10 क्या तरह का number है जो कि एक rounds represent करता है मतलब कि एक तरह से समझो नहीं कि ऐसा number है जो कि salt आपके लिए generate कर रहा है आप चाहते हैं तो यह चीज भी कर सकते थे मैंने salt डाल दिया this is salt यह salt भी उन्होंने डाल सकते थे लेकिन कोई sense नहीं है जितना बड़ा number होगा वो उतना ज़्यादा complex salt को generate करेगा एक चीज़ ध्यान रखना बहुत बड़ा number दिने का नुकसान क्या हो सकता है कि जो hashing algorithm उसको बहुत समय लग सकता है password को hash करने में इसलिए 10 एक तरह का ideal kind of number होता है यह salt हमारे पास generate हो गया अब हमारा next काम क्या है hash password ठीक है जब hash password करेंगे तो उसके लिए हम लोग क्या करना है भीया const hashed password is equal to await becrypt. और hash password दो पारामेटर लेता है अगर आपके पास जो कौन सा password को update करना चाहें तो person.password सी इस person के अंदर हमारे पास password नाम का data है हाँ जी है और दूसरा क्या salt ठीक है अब हम कर देंगे person.password is equal to hash password हमने उस password को replace कर दिये hash password तो जो password हमें और becrypt जो password बना रहा है वो कैसे बना रहा है जो person user password दे रहा है और salt को add करके उसने एक hash password बनाया है और उस hash password को हमने save कर दिया है कोई दिक्कत यहां था कोई दिक्कत नहीं जी कैस में क्या है रिटर्न नेक्स्ट तो कॉल करना है और एरर कॉल कर दिया इसके अंदर नेक्स्ट बिसिकली काइंड ऑफ कॉल बैक फंसन है जो कि मॉंगूस को यह बता रहा है भाईया हमने अपना पार्ट यह प्रॉपर वर्क करेगा, परफेक्टली वर्क करेगा, कोई भी दिक्कत वाली बात नहीं है, लेकिन अब हम लोग को author.js में भी जाकर, यहाँ पर जो हम लोग password compare कर रहे हैं, उसको change करना पड़ेगा, मैंने यहाँ पर बोला, मैंने क्या किया, user.
एक function मनाया, compare, password, ठीक है, मैंने यहाँ पर person schema के अंदर एक function मना देते हैं, जो कि compare password नाम का function है, जो कि इस password को लेगा, और जो भी result होगा, उसको restore करके इसमें डाल देगा, ठीक है, फिर तो कोई दिक्कत नहीं हमारा इस काम बच गया इस फंसन को बनाना हम पर सने इसकी मां पर हां जी है मैंने बोला पर सने इसकी मां डॉट मैथड्स डॉट पासवर्ड कंप्यूट अब यहां पर चित्स मजना मैंने लिखा असिंग फंसन ठीक है एंड इसके अंदर लेगा कैंडिडेट पासवर्ड ठीक है ट्राइड किया है एंड वह टाइस कैच किया है इसके अंदर है एरर मैंने पर समझो हमने अपने गलत दिखा फंसन का नाम होगा है ठीक है बीच डॉट हैस अ फिर यह हम लोग पास करते हैं आज पासवर्ड एंड स्वाल्ट आइट करते हैं एक चीज यहां पर ध्यान से समझना कि यह जो जन सॉल्ट है ना यहीं रिस्पॉंसिबल है सॉल्ट को जेनरेट करने के लिए एक रैंडम काइंट ऑफ स्ट्रिंग जनरेट करता but obviously वो उतना secure भी होगा लेकिन computational cost भी आपका बढ़ जाएगा इसलिए इस चीज़ को जितना एक ideal रख सकते हैं उतना रखना इस चीज़ हमने decide कर लिया कि basically इस modified function क्या करता है यह Mongoose खुद provide करता है जो कि बता रहा होता है कि अगर आप किसी field को जो field यहाँ पर change कर रहे हो तो आपको true return कर देगा यह विशेष निर्भा नहीं है, लेकिन यह बहुत इंच विशेष नहीं है। क्यों यहां पर एक जी समझना है? हम यहां पर एक जी जाना गया है। और यहां पर क्या हुआ? दोस्तों अभी तक आप बहुत बातें कम समझने आएगी। लेकिन जब हम user फिर से डालेगा, let's say मैंने password prince डाला था, तो password prince वो कैसे पता लगाएगा, ध्यान समझना एक चीज़, जो भी हमने salt यहाँ पे generate किया है न, और जो भी यह hash password बना रहा है, ध्यान समझना, जो hash password उसमें दोनों चीज़ है, हमारा password भी छिपा हुआ है, और हमारा Because वो already stored है, hased password के अंदर ठीक है, यह जो password बना के दे रहा है, उसके अंदर दोनों चीज है हमारा password भी छिपावा है, salt भी छिपावा है, जो भी salt यह generate करके दे रहा है हमें उससे मतलब नहीं है, चलो, बहुत बढ़िया अब हमने क्या किया, compare method लगाया ultimately हमें function मना चाहरे, compare password जो कि password को compare करके बताएगा, कि exactly में यह जो password user दे रहा है, और जो database में stored है दोनों यहां पर ध्यान जा समझना है इस चीज को आप मैंने यहाँ पर बोला कि हम लोग बी क्रिप्ट का यूज़ करेंगे तो const is match is match नाम कम नहीं कि हम वैरिबल बनाया और मैंने यहाँ पर बोला await bcrypt.compare ठीक है compare नाम का function होता है compare नाम का उसके अंदर वो candidate password और दूसरा पारामेटर लेगा this.password ठीक है बस यह दो पारामेटर is मैच अब यहां पर समझने वाला बात यहां पर कंपेयर फंसिन यह कंपेयर फंसिन वर्क कैसे करता है जब भी हम लोग बाद में पास बहुत छोटा सा डिफरेंस है अभी तक आपके दिमाग में क्या चल रहा है कि हम लोग जब भी पासवर्ड डालते हैं यहां पर आप समझने इस चीज को ध्यान समझना इस चीज अब में पासवर्ड प्रिंस स्टोर किया प्रिंस डाला जो डाटाबेस में स्टोर हुआ लेट सब्सक्राइब ठीक है अब हमने दुबारा जब लॉग इन के टाइम पर जब हम दुबारा जब चेक कर रहे हैं चेक के टाइम हमने पासवर्ड फिर से प्रिंस डाला ठीक है तो हमारे दिमाग में क्या या लेट सबसे हमने गलत पासवर्ड डाल दिया अगरवाल डाल दिया पासवर्ड ठीक है तो ह इस वाले में से salt extract करेगा extract salt ठीक है salt मिल गया फिर क्या करेगा salt plus जो password हमने डाला agarwal ठीक है उससे मिला के ये hash बनाएगा ठीक है जो भी hash आया let's say butter वे सो कुछ different ही hash होगा ठीक है यह जो है डाटा है और यह जो है डाटा है वह सेम है कि नहीं यह पता लगाने वाली यहां पर चीज है अंतर समझना दोनों में भाई अभी लगेगा कि क्या ही अंतर था भाई या लेकिन बहुत बड़ा अंतर है ठीक है जब आगे चलके आपको सबसे पर डौट आएगा ना क एंड यूज इट टू हैस द इंटर पासवर्ड जो मैंने इंटर किया पासवर्ड उसको फिर से हैस करने में उसी साइड के मदद से यूज करता है एंड फिर कंप्यॉर करता है रिजल्टिंग हैस को विदाइस टोड हैस जो इस टोड किया है शमने जो रिजल्ट है शायद उन्होंने कंपेयर करेगा यह होता है एक्ट्रॉल प्रॉसेस बहुत ही बढ़िया इंटरव्यू का जनरी जिन्हें हम लोग क्या सोचते हैं कि जो has password इस टोड़र है उसमें से password निकालेगा और दोनों password वो compare करेगा नहीं यह एकदम गलत सोच है ठीक है तो इस चीज को हम पूरा का पूरा omit करते हैं यार अब हमारा पूरा का पूरा code complete है यह same function हम लोग यहाँ पर use तो क्या मैन्यू हमारा ऑथन्टिकेटेड है? नहीं, मैन्यू ऑथन्टिकेटेड नहीं है क्या नॉर्मल रॉट हमारा ऑथन्टिकेटेड है?
नहीं, वेलकम टॉपर होटल प्रिंट हो गया क्या परसन ऑथन्टिकेटेड है? हाँ जी ऑथन्टिकेटेड है यह बहुत बज़ाव है, अब लेट सपोस अब हम इसको चेक करते हैं इसको लेकिन अब हमने इसको अगर हिट किया पासवर्ड तो यह हिट कर गया क्योंकि हमने पासवर्ड सेव कर ल मैंने यहां पर डिलीट किया यहां से इसको अगर रिफ्रेस किया ठीक है आट्री रिकॉर्ड अगर अब मैंने सेंड किया तो अनुसराइज्ड आ गया ठीक है अब पहले मुझे क्या करना पड़ेगा एक तो रिक्वेस्ट एक डाटा बनाना पड़ेगा ठीक है मैं ठीक है मैंने अगर इसको हिट किया इस डाटा से यह मैंने पासवर्ड चेंज कर दिया 12345 ठीक है अगर अब बद ऑफिंटिकेशन लगा दिया है तो मैंने पहले से क्या करते हैं इसको बढ़ाते हैं ठीक है अब इसको रन करते हैं एक बाद अब डाटा सेव करते हैं तो हमारे पास डाटा तो सेव हो गया और इस अगर आपको ध्यान हो देखो पासवर्ड हमारा है फॉर में यहां पर तो यहां पर पासवर्ड और डाल दिया ठीक है तब कैसे वर्क कर गया भाई अच्छा यहां पर देखो हमने गलती क्या किया अवेट नहीं लगाया इसकारण से इशु क्या हो रहा है ना कि यह इस फंसन के रिजल्ट का वेटी नहीं कर रहा है ठीक है अगर लेट्सपोस अब हमने यहां पर फोर डाल के इंटर किया तो आनवश्राइश का एक्सेस आएगा फाइव डाला परफेक्टली सही है अब अगर इसको हिट किये कोई दिक्कत बैड रिक्वेस्ट बहुत बढ� तो देखते हैं username गलत डाल दिया तो unauthorized बहुत सही password में कुछ भी number डाल दिया गलत फिर से सही डाला सही this is the way we stored अगर मैं इसको refresh करूँ अब database देखो कि database में कैसे password hashed forward में stored है अब इस hashed password को देखके कोई भी इसका password guess नहीं कर सकता and this is the perfect industrial practice जिस तरह से हम लोग किसी भी database में password को store करते हैं किसी person के data को store करते हैं हमारा sessions वाला part बाकी रह गया है, sessions वाले part का एक simple से requirement है भाई, अगर इस वीडियो वे 500 like और 300 comment अगर हो जाते हैं complete, मैं सच बदा रहा हूँ, next दिन session का वीडियो निकाल दूँगा, कोई भी बड़ी बात नहीं है इस चीज को लेके, लेकिन मेरे लिए अभी criteria थोड़ा बढ़ इसलिए notes मैं आप लोगों को दे दूँगा, ये notes लेकिन उन्हीं लोगों को मिलेगा, जो लोग मुझे LinkedIn पर tag करेंगे, tag कैसे करना है, आपने बास simple LinkedIn डालना है, आपको यहाँ पर post करना है, आप जो भी सीखते हो, अब मेरे वीडियो से आप उसका screenshot ले सकते हो, या इस playlist का screenshot नाम आजाएगा प्रिंस कुमार और सिंपल से नीचे में हैस्टैग में notes डाल देना यार हैस्टैग notes और अपना एक email डाल देना ठीक है email जो भी इस email प्रिंस.attherategmail.com लेट सबसे मैंने डाला जो भी ये बन्दा email लिखेगा उस email को ये access मिलने वाला है simple सही साब है अब क्या कर सकते हैं थोड़ा सा MBA का दिमाग लगाना पड़ेगा अगर मुझे अपनी award बढ़ानी है तो because this is the best resources जहां से आप सीख सकते हो please जितने भी लोग कर सकते हैं करना जिन लोगों ने मुझे tag किया tag करना important है tag करने के लिए simple है then अपना email then hashtag notes ये सबसे अधिक अगर hashtag notes जेस भी लगा पाओ तो सोने पे सुहागा ठीक है और एक screenshot एक photo attach कर देना जो भी photo प्लगाना चाहो और जो भी चीज आपने सीखी खास कर दो इस लिंड इन पोस्ट का सबसे बड़ा मकसद क्या है कि आप जो सीख रहे हो वह लोगों को जो लोग भी comment करेंगे और please मुझे बताना कि आप किस लिए comment कर रहे हो क्या पढ़ा आपने क्या सीखा क्या demand है hashtag notes मैं समझूँगा कि आप notes चाह रहे हो email जरूर mention करना because email नहीं दोगे तो आपके तक mail पहुँचेगा नहीं ठीक है and next videos के लिए अगर आपको session related video चाहिए jwt क्या होता है sessions क्या होते हैं tokens क्या होते हैं इस अरजीज़े अगर आपको detail में समझना है तो इस video पर simple टार्गेट है 500 like plus 300 comment जिस दिन पूरे हो जाएंगे अगली दिन उस वीडियो को भी मैं रिलीज कर दूंगा थैंक्स अलोट यार पेसेंसली सुनने के लिए आपका सपोर्ट आपका कमेंट सच बता रहा हूँ बहुत मुझे मोटिवेट करता है इस तरह की वीडियोस बनाने के लिए आपको सच में आइडिया भी नहीं है कि इस तरह की वीडियोस को इतना इंफर्मेटिव इतना कंसाइज़वें वीडियोस को बनाने के लिए कि