मैं यह समझ गया!
सबसे पहले आपको सही रणनीति को लागू करने की आवश्यकता है। मेरे मामले में LocalStrategy, और आपको अपना सत्यापन तर्क प्रदान करने की आवश्यकता है। उदाहरण के लिए, आइए पासपोर्ट-स्थानीय में एक का उपयोग करें।
var passport = require('passport')
, LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
आपके द्वारा प्रदान किया गया सत्यापित कॉल बैक function(username, password, done)
आपके उपयोगकर्ता को खोजने और जाँच करेगा कि क्या पासवर्ड मेल खाता है (प्रश्न और मेरे उत्तर के दायरे से परे)
passport.js को उम्मीद है कि इसके कई टुकड़े काम करेंगे, एक यह है कि आप उपयोगकर्ता को रणनीति में वापस करते हैं। मैं कोड के उस हिस्से को बदलने की कोशिश कर रहा था, और यह गलत था। कॉलबैक उम्मीद करता है false
कि यदि सत्यापन विफल हो जाता है और object
(मान्य उपयोगकर्ता) यदि आप सफल हैं।
अब .... जेडब्ल्यूटी को कैसे एकीकृत किया जाए?
अपने लॉगिन मार्ग में आपको एक सफल ऑर्टिकल या असफल असफल को संभालना होगा। और यह यहां है कि आपको JWT टोकन निर्माण को जोड़ने की आवश्यकता है। इस तरह:
(सत्र को निष्क्रिय करने के लिए याद रखें, अन्यथा आपको क्रमबद्ध और डीसर्विलाइज़ कार्यों को लागू करना होगा। और यदि आप सत्र को जारी नहीं रख रहे हैं, तो आपको उन लोगों की ज़रूरत नहीं है, जो आप नहीं हैं यदि आप टोकन आधारित नीति का उपयोग कर रहे हैं)
पासपोर्ट-स्थानीय उदाहरणों से: (JWT टोकन के साथ)
app.post('/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err) }
if (!user) {
return res.json(401, { error: 'message' });
}
var token = jwt.encode({ username: 'somedata'}, tokenSecret);
res.json({ token : token });
})(req, res, next);
});
और वह यह है! अब जब आप कॉल / लॉगिन और POST उपयोगकर्ता नाम और पासवर्ड (जो हमेशा SSL पर होना चाहिए) ऊपर दिए गए पहले कोड का स्निपेट आपके द्वारा प्रदान किए गए उपयोगकर्ता नाम के आधार पर एक उपयोगकर्ता को खोजने का प्रयास करेगा और फिर जांच करेगा कि पासवर्ड आपको मेल करना है (बेशक अपनी आवश्यकताओं के अनुरूप परिवर्तन करें)।
उसके बाद आपके लॉगिन मार्ग को कॉल किया जाएगा और वहां आप किसी त्रुटि या वैध टोकन को वापस लेने का ध्यान रख सकते हैं।
आशा है कि यह किसी की मदद करेगा। और अगर मैंने कोई गलती की है या कुछ भूल गया है तो मुझे बताएं।