जेडब्ल्यूटी उपयोग का वर्णन करने वाला प्रत्येक उदाहरण कोड पेलोड के बारे में बात करता है, आमतौर पर यह नाम और भूमिका जैसी उपयोगकर्ता जानकारी होती है।

मैं सोच रहा हूं कि जेडब्ल्यूटी के अंदर उस जानकारी को एन्कोड करने का क्या मतलब है जब कोई अतिरिक्त सुरक्षा नहीं होती है और केवल फ्रंट-एंड पर बोझ पड़ता है जिससे यह विशेष रूप से जेडब्ल्यूटी को डीकोड करने के लिए लाइब्रेरी लोड करता है।

मैं जो पूछ रहा हूं वह यह है कि उत्तर में जेडब्ल्यूटी के साथ उपयोगकर्ता डेटा (या जो भी पेलोड आपको पास करने की आवश्यकता है) भेजने के बजाय इस एन्कोडिंग को बनाने का कोई कारण है।

वर्तमान में मैं भेज रहा हूं: (यह एक्सप्रेसजेएस कोड है)

const jwt = jwtUtils.buildToken(user);
res.json({ jwt });

जहां jwt में उपयोगकर्ता जानकारी वाला पेलोड होता है।

लेकिन क्या होगा अगर मैं इसके बजाय करता हूं:

const user = userModel.get(userId);
const jwt = jwtUtils.buildToken();
res.json({ jwt, user });

इस तरह मुझे अपने उपयोगकर्ता डेटा तक पहुंचने के लिए जेडब्ल्यूटी को डीकोड करने की आवश्यकता नहीं है, मैं प्रमाणीकरण के बाद प्रत्येक और अनुरोध पर इसे भेजने में सक्षम होने के लिए जेडब्ल्यूटी को सहेज दूंगा और सीधे उपयोगकर्ता डेटा तक पहुंच सकता हूं।

मुझे किसकी याद आ रही है?

jwt
1
FLC 16 मार्च 2020, 18:28

1 उत्तर

सबसे बढ़िया उत्तर

कोई भी आपको पूरी उपयोगकर्ता जानकारी को अपने टोकन में डालने के लिए मजबूर नहीं करता है, और आमतौर पर टोकन के पेलोड को न्यूनतम तक सीमित करने की अनुशंसा की जाती है।

RFC719 सेक्शन 4.1 के अनुसार सभी दावों को वैकल्पिक के रूप में चिह्नित किया गया है।

लेकिन एक चीज जो आपको याद आ रही है वह यह है कि बैकएंड को आमतौर पर उस उपयोगकर्ता की पहचान करने की आवश्यकता होती है जिससे आने वाला अनुरोध भेजा गया था, उदा। केवल उन संसाधनों तक पहुंच प्रदान करने के लिए जिन्हें उपयोगकर्ता को एक्सेस करने की अनुमति है या लॉगिंग उद्देश्यों आदि के लिए। इसके अलावा बैकएंड साइड पर कभी-कभी उपयोगकर्ता की भूमिका की आवश्यकता होती है। प्रत्‍येक सूचना जो आप प्राधिकरण के प्रयोजनों के लिए बैकएंड पर उपयोग करते हैं, वह टोकन का ही भाग होनी चाहिए, क्योंकि हस्ताक्षर सुनिश्चित करता है कि इस जानकारी में हेराफेरी नहीं की गई थी।

तो अधिकांश अनुप्रयोगों में पेलोड को केवल एक उपयोगकर्ता आईडी और आमतौर पर समाप्ति टाइमस्टैम्प तक सीमित करने के लिए पर्याप्त है।

उदा.:

{
  "exp": "1516239022",
  "id": 1
}

अन्य जानकारी, जैसे कि उपयोगकर्ता नाम, अक्सर केवल फ़्रेनेंड पर उपयोग की जाती है और बैकएंड के लिए अक्सर अर्थहीन होती है।

0
jps 16 मार्च 2020, 19:19