0:00
अपने पिछले वीडियो में हम लोगों ने समझा बहुत ही अच्छी तरह से कि किस तरह से पासवर्ड का है शॉट और पैपर काम करता है बहुत सारे लोगों ने बोला कि यार इतना कुछ समझाने की क्या जरूरत थी बट यह जरूरत थी क्योंकि अगर मैं डिरेक्टली इं��
0:30
लूंगा कि सबसे पहले तो यह जो मैंने आपको पिछली वीडियो में थिरी बताई थी उसको यहां पर हम इंप्लेमें��
0:35
करेंगे और उसके बाद हम लोग देखेंगे कि किस तरह से हम अक्शन में सॉल्ट वगैरह जनरेट कर सकते हैं त��
0:41
सबसे पहले तो मैं क्या करूंगा आप लोगों को बोलूंगा कि आप node.json index.js कर लो ताकि सर्वर स्टार्ट हो जाए ठीक है वो तो आपको मालूम है बट और उसी के साथ सथ आप लोग लिखो npm install bcrypt.js अब यह bcrypt.js क्या है आप लोग कहोगे तो bcrypt.js एक package है एक node.js package है bcrypt
1:11
आप यहाँ पर salt generate कर सकते हो, आप hash create कर सकते हो
1:15
अब hash sync करके भी एक function होता है, जो की blocking function होता है, हमें blocking function की ज़रूरत नहीं है
1:21
यहाँ पर हम await यूज़ करेंगे, और bcrypt.hash को यूज़ करेंगे, जो की promise return करता है, ठीक है
1:26
तो सबसे पहले तो हमें obviously import करना पड़ेगा bcrypt को ठीक ह��
1:30
bcrypt install हो गया बंद कर देता हूँ इसको terminal को भी और bcrypt को import कर लेता हूँ यहाँ पर ठीक ह��
1:36
तो मैं यहाँ पर लिखूँगा const bcrypt is equal to require bcrypt js ठीक ह��
1:41
उसी के साथ सब मैं क्या करूँगा कि जहां पर मैं अपने password से create कर रहा हूँ user को देखो यहाँ प��
1:46
मैं यहाँ पर एक काम करता हूँ secured password नाम से एक variable बनाता हूँ ठीक है user को create करने से पहल��
1:53
तो मेरा यह जो secured password होगा वो मुझे यहाँ पर update करना है ठीक है अभी मेरा request.body.password
2:00
मेरे पास है ठीक है जो कि मैं यहां पर चेंज कर सकता हूं अब देखो यहां पर आप लोग क्या कर सकते हो क��
2:07
बीच रिप्ट जस को ऐसे इस्तेमाल करना है यह मैं आप लोगों को बताता हूं सबसे पहले तो हम लोग एक सॉल्��
2:11
जाएंगे अब एक कॉल्ड इस एक्वल टू एम बीक्रिप्ट डॉट जन सॉट जो फंक्शन आप लोग आलर्डी बताया था डॉक्यूमेंटेश��
2:19
लिखा हुआ था, bcrypt.gen salt 10 आप करोगे, तो आपको एक salt generate होक��
2:23
मिलेगा, उसी के साथ से आप क्या करो, जो password है, उसक��
2:27
आप कैसे generate करोगे, bcrypt.hash अब आप में से कई लोग कोई आप गया है
2:31
हमने salt को store क्यों नहीं करा, पिछले वीडियो की थिवरी के हिसाब से त��
2:35
salt को हमें store करना था लेकिन यहाँ पर हमने salt को store ही नहीं कर��
2:39
तो यार bcrypt का जो internal mechanism होता है वो यह सब चीजों को अपने हिसाब से करता ह��
2:43
तो आप जो मैंने पिछले वीडियो में बताए वो directly bcrypt से map मत कर��
2:48
तो आईडीली सॉल्ड को स्टोर किया जाता है बट यहां पर बीक रिप्ट का जो है शोता है वह थोड़ा सा कॉम्प्लीकेटे��
2:53
होता है और इंटरनल फंक्शनिंग बीक रिप्ट की थोड़ी सी अलग होती पर जो थोड़ी पिछले वीडियो में बताइए बिल्कु��
2:58
काम हम लोग यहां पर कर रहे हैं तो यह क्यों कर रहे हैं इसलिए मैंने आप लोगों थे बताइए थी क��
3:02
बहुत सारे लोग कहेंगे कि यार क्यों कर रहे हैं इस चीज को तो यहां पर देखो मैंने लिखा कौन सीख रे��
3:06
पासफर्ट इस इकॉल टू अब इसको अवेट करूंगा मैं अवेट क्यों करूंगा कि प्रॉमिस रिटर्न करता है क्या मै��
3:11
अपने फंक्शन को एसिंक मार्क किया हां किया ठीक है इसको अवेट करने का रिजन आपको समझ में आ गया बीग्रि��
3:16
और टाइश जो पासफर्ट तब वह दिया और सॉल्ड दे दिया मैंने क्या मेरा मांगो डीवी चल रहा है नहीं यार मेर��
3:22
मांगो डीवी कॉमपस नहीं चल रहा है तो मुझे मांगो डीवी कॉमपस को भी चलाना है ताकि मैं इस्तेमाल कर सकूं अपन��
3:28
activity click create a new user collection body data Boris Mehta B Mehta password scam92021
4:10
database है उसके अंदर जो user collection है उसको मैं खोलूंगा refresh करूँ data तो देखो सिर्फ 3 user है यहाँ पर और password plain text मे��
4:17
store हो रहा है ठीक है अभी मैं send पर click करूँगा तो यहाँ पर internal server error आ गया ह��
4:23
जरूर मैंने कुछ गलबल करी है देखते हैं क्या error है एक बार मैं देखना चाहूँगा यह कहा इलीगल आर्ग्यूमेंट स्ट्रिंग कमा ऑप्टेक्ट तो यह कहां पर दिक्कत आ रही है मुझे देखना पड़ेगा इलीगल आर्ग्यूमेंट्स लगता है मैंने कुछ गड़बड़ करी है request.body.password
4:37
or salt, bcrypt.gen salt क्या bcrypt.gen salt जो है वो एक promise return करता ह��
4:43
हाँ ये एक promise return करता है तो हमें यहाँ पर क्या करना पड़ेगा हमें यूज़ करना पड़ेग��
4:47
await ठीक है तो यहाँ पर await यूज़ करना पड़ेगा यहाँ पर भ��
4:51
चुकी वरना क्या हुआ ये promise रिजॉल होगी नहीं है और ये डिरेक्टली नेक्स लाइन पर चला जाएग��
4:55
अवेट का मतलब की रुक जाओ जब तक ये प्रॉमिस रिजॉल ना हो जाए तब तक रुको और इसकी वैल्यू लेकर जा��
5:01
तो सॉल्टी इसकी वैल्यू लेकर नीचे जाएगा ठीक है अब क्या कर लोगे बॉरिस मैथर का अकाउंड में लॉग इन नहीं कर सकते ठीक है तो यह चीज मैंने आप रिम्प्लीमें��
5:28
कर दिया भी ठीक है तो क्रिएट अनियूजर तो हमारी बिल्कुल सही काम कर रही है वाली एंड पॉइंट पर जरा आ��
5:34
पूछो कि जब कोई लॉग इन करता है तब उसे रिटर्न में क्या देंगे हम उसे रिटर्न में क्या उसी का यूजर नेम औ��
5:39
सारी डिटेल्स देंगे नहीं हम ऐसा नहीं करेंगे जब भी कोई लॉग इन करेगा हम उसको एक टोकेन देंगे अब टोके��
5:46
तरह के होते हैं, एक session token भी होता है, एक json web token भी होता है, अलग-अल��
5:49
तरह के mechanism है authentication के, इस particular mern course में मैं आप लोगों को use करके दिखाऊंग��
5:55
JWT authentication, अब ये JWT authentication क्या है, तो मैं यहाँ पर लिखूँगा JWT
6:01
node.js, तो json web token नाम का एक npm package है, जिसको install
6:05
किया जा सकता है npm i json web token अब आप में से कई लोग शाय��
6:09
confused हो जाएँ और सोचेंगे कि या ये json web token क्या है तो json web token
6:13
basically अगर मैं बहुत short मैं आप लोगों को बताऊं तो एक तरीका ह��
6:17
verify करने का एक user को क्योंकि बार बार user अपना user id और password
6:21
पर तो भेजेगा नहीं मुझे मान लो मैंने एक बार यूजर को क्रिएट कर लिया ठीक है या फिर ऑथेंटिकेट करा दिय��
6:27
उसका यूजर आईडी पासवर्ड लेकर ऑथेंटिकेट करने के बाद मैं एक टोकेंट दूंगा यूजर को एक टोकेंट दूंगा औ��
6:33
अगली बार जब भी कोई प्रोटेक्टेड राउट मेरे वेबसाइट पर या मेरे इस एक्सप्रेस सर्वर पर यूजर को एक्सेस करना पड़ गया तब वो क्या करेगा मुझे वो टोकेन भी भेजेगा ताकि मैं वेरिफाई कर सकूं कि ये वही यूजर है जिसको मैंने ओथ��
7:03
algorithm token type data JSON web token signature
7:22
अब ये signature important है मैं क्या करूँगा जब भी एक JSON web token अपने server से dispatch करूँग��
7:28
तब मैं उसको sign करूँगा sign करूँगा अपने secret से अब आपको यार ये क्या बोल रहे होई तो मुझे समझ मे��
7:34
नहीं आ रहा है क्या मतलब हो इस बात का sign करो अपने secret से तो मैं आपर आपलोग क��
7:38
बदाता हूँ मैं एक अपना एक constant बनाओंगा जो की ideally आप लोग एक config file में या फिर मैंने जैसे आपको .env.local बताया था उसमें डालोग��
7:50
but मैं यहाँ पर JWT secret जो है उसको एक string मना दूँगा ठीक है और यह string एक good enough अच्छी string होनी चाहि��
7:58
जैसे मान लो मैं लिखता हूँ Harry is a good B dollar boy ठीक ह��
8:03
तो ये मेरी string है और ये मुझे किसी को दिखानी नहीं है ये मुझे बहुती safe रखनी है और इससे मैं क्या करूँग��
8:10
अपने web token को sign करूँगा ठीक है अब मान लो मैंने इससे अपने web token को sign कर��
8:16
और web token generate करके आपको भेज दिया अगली बार मैं ये पता लगा सकता हू��
8:20
कि आपने इसके payload data को change करा है कि नहीं करा है ideally आपने इसके payload data को change नहीं करा होना चाहि��
8:26
अब मानलो किसी ने यहाँ पर मानलो मैंने json web token दिय��
8:31
shubhangi को ठीक है shubhangi ने login करा मेरे server पे मैंने उसको JSON Web Token दिया
8:36
अब Shubhangi निकली चलाग, उसने क्या करा, Shubhangi Change करके Shivam लिख दिया
8:40
अब उसने, क्योंकि Shubhangi Change करके Shivam लिख दिया, वो expect यह करेगी
8:45
कि मैं अपने server से Shivam की information देना शुरू कर दूँगा, लेकिन मैं ऐसा नहीं करूँगा, मैं इस signature को verify करूँग��
8:50
मैं ये देखूँगा कि क्या ये token change तो नहीं किया गया ह��
8:54
और उसके बाद ही मैं आपको भेजूँगा ये चीज़ तो एक बहुत अच्छी security हो जाती ह��
8:59
एक काम करते हैं जो JWT का वीडियो है वो मैं अलग से एक बार बना दूँग��
9:03
इसी चैनल पर बना दूँगा, मैं यहाँ पर बहुत ज़रा डिसकस नहीं करूँगा JWT क��
9:07
बस आपको जैसा समझ लो कि क्लाइंट और सर्वर के बीच में बहु��
9:10
सिक्यूर कम्युनिकेशन करना फैसलिटेट करवाता है JWT ओथनिकेशन, ठीक है अब किस तरह से ये JSON Web Token वाले पैकेज को इस्तेमाल करना ह��
9:18
हमने इसको इंस्टॉल कर लिया हम इसको इंपोर्ट करेंगे ठीक है और इंपोर्ट करने के बाद हम अपने JSON Web Token को साइन करेंग��
9:25
ये डेटा है ठीक है और जो दूसरा आर्ग्यूमेंट लेता है dot sign method, वो क्या लेता है
9:31
वो लेता है secret, ठीक है, तो दूसरा method जो लेता है, दूसरा जो ये लेता है, वो secret लेता है
9:36
ठीक है, और ये एक promise return करेगा, ठीक है, तो यहाँ पर मैं क्या करूँगा, जल्दी से इसक��
9:43
save कर लेता हूँ, जितना मैंने अभी लिखा है, कि मैं एक token भेजूंगा और इस token में user की ID भेजूंगा क्योंकि मेरे पास ID पे index लगी हुई ह��
10:04
index लगी हुई है क्या मतलब है अगर मैं आप लोगों को यहाँ पर दिखाओं तो मैं अगर ID से retrieve करूँगा कोई भी information
10:11
इस collection में से तो वो सबसे fast रहेगी तो वो जो document retrieval है वो सबसे fast
10:17
मेरे पास तब होगा जब मैं ID का इस्तेमाल करूँगा तो मैं ID ही क्यों ना भेज दू��
10:22
मैं ID ही भेज दूँगा और उसके बाद मैं verify कर लूँगा token क��
10:26
जब भी मेरे पास server में कोई request आएगी तो जो मेरा JWT secret है वो मैं डाल दूँआ यहाँ पर ठीक ह��
10:45
और मैं यहाँ पर आप लोगों को दिखाता हूँ कि const JWT data is equal to
10:51
console console JWT data return
11:02
तो हम क्या करेंगे डेटा को भी बना लेंगे यहाँ पर तो मैं यहां पर लिखता हूं कॉट्स टेटा इस एकॉल ट्री एक ऑब्जेक्ट रहेगा और यह ऑब्जेक्ट कैसा रहेगा मैं यहां प��
11:11
लिखूंगा डेटा ठीक है यहां फिर मैं लिखूंगा यूजर और जो यूजर रहेगा वह क्या रहेगा उसकी आईडी में लिख दूंग��
11:18
यूजर डॉट आईडी ठीक है सिंबल सी चीज है मैंने आईडी यहां पर भेज दी अब देखो आप लोग मैं क्या करूंग��
11:23
मैं आपको जल्दी से आपका आपको अपने नोड मॉन दिखाता हूं और मैं आप जैसे ही रिक्वेस्ट मारूंगा तो जैसे ही मैंने रिक्वेस्ट मारी सॉरी या यूजर विद इस ईमिन ऑलरेडी एक्जिस्ट होके एक यूजर ऑलरेडी एक्जिस्ट करता है बॉरिस मेथ��
11:53
देख लेते हैं सिंक्रोनेस ली साइन द गिवन पेलोड यह एक सिंक मेथल तो मुझे टेंशन लेने की जरूरत य��
11:58
वेट वगैरह करने की जरूरत नहीं है मुझे डारेटली डाटा मिल जाएगा ठीक है तो मैं करूंगा क्या कि टोके��
12:04
दूंगा ठीक है तो मैं यहां पर क्या करूंगा और टोकन इज इकॉल टू इन फैक्ट मैं इसको जेसन जेडव्यूटी डाट��
12:11
ना करके मैं इसको और टोकन बोल देता हूं और टोकन और मैं रिक्वेस्ट और जेसन यूजर ना भेजकर इस बार क्या करूंग��
12:18
तो यहां पर मैं यह यूज कर रहा हूं और टोकेंट ठीक है तो टोकेंट में मुझे यह यह लिखने की जरूरत नहीं ह��
12:28
मैं यह लिखकर और टोकेंट और टोकेंट भेज सकता हूं ठीक है तो आप देखना यहां पर अगर मैं बॉरिस IRA3 करू��
12:35
और यहाँ पर मैं सेंड करूं तो आप लोग देखो यह और टोकन मुझे मिल गया ठीक है मिल गया और टोकन की नही��
12:43
मिल गया हां मिल गया तो मैंने यहां पर और टोकन भेज दिया ठीक है अब कभी भी यह और टोकन मुझे कोई बापस देग��
12:49
तो मैं इसको convert कर पाँगा कि इस में इस data में, मैं इस data में वापस convert कर पाँगा और अपने secret की साहिता से मैं ये भी पता लगा पाँगा कि किसी ने इसके साथ temper तो नहीं करा है, अगर किसी ने इसके साथ tempering करी होगी तो मुझे पता चल जाएगा, ठीक है, वैसे ideally 99% of the users आपक��
13:19
जेसन वेब टोकन का यह जो तीसरा पार्ट है इसके थूँ आप पकड़ लोगे और आप लोग पकड़ोगे कैसे यह भी मैं आप लोगों को बता देता हूँ आप लोग यहाँ पर JWT.SIGN मेथट का इस्तेमाल करोगे और यह आपको बता देगा सॉरी JWT.VERIFY मेथट का यूज��
13:49
को login करने में मदद करेगा, तो यहाँ पर हम लोग email से और उसी के साथ साथ जो password है उससे user को login करवाएंगे
13:58
तो I hope कि आपको समझ में आ गई यह सारी चीज़ें, जो कि मैंने आप लोग को भी बताई, अगर आप चाहें तो इसमें एक username भी add कर सकते थे
14:04
but मैं email के through login करवाँगा user को हम आने वारे videos मे��
14:08
ये सब चीज़ेंगे कैसे करते हैं अभी के लिए इस video में इतना है guys thank you so much guys for watching this video
14:13
and I will see you next time करते है��