Bunu anladım!
Öncelikle doğru stratejiyi uygulamanız gerekir. Benim durumumda LocalStrategy ve doğrulama mantığınızı sağlamanız gerekiyor. Mesela pasaport-yerelde olanı kullanalım.
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);
});
}
));
Sağladığınız doğrulama geri araması function(username, password, done)
, kullanıcınızı bulmanızı ve şifrenin eşleşip eşleşmediğini kontrol etmenizi sağlayacaktır (sorunun ve cevabımın kapsamı dışında)
passport.js, çalışması için birkaç parça bekler, birincisi, kullanıcıyı stratejide iade etmenizdir. Kodun o kısmını değiştirmeye çalışıyordum ve bu yanlıştı. Geri arama false
, doğrulama başarısız olursa ve object
başarılı olursanız (doğrulanmış kullanıcı) bekler .
Şimdi .... JWT nasıl entegre edilir?
Giriş rotanızda, başarılı veya başarısız bir kimlik doğrulaması yapmanız gerekecektir. Ve burada JWT jetonu oluşturmayı eklemeniz gerekir. Şöyle:
(oturumu devre dışı bırakmayı unutmayın, aksi takdirde serileştirme ve seriyi kaldırma işlevlerini uygulamanız gerekir. Oturumu devam ettirmiyorsanız bunlara ihtiyacınız olmaz, eğer belirteç tabanlı bir kimlik doğrulama kullanmıyorsanız)
Pasaport yerel örneklerinden: (JWT jetonu eklenmiş olarak)
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);
});
Ve işte bu! Şimdi aradığınızda / giriş yaptığınızda ve POST kullanıcı adı ve şifresini (her zaman SSL üzerinden olmalıdır) aradığınızda, yukarıdaki ilk kod parçacığı, sağladığınız kullanıcı adına göre bir kullanıcı bulmaya çalışacak ve ardından şifrenin eşleşip eşleşmediğini kontrol edecektir (Tabii ki, bunu ihtiyaçlarınıza uyacak şekilde değiştirin).
Bundan sonra oturum açma rotanız aranacak ve orada bir hata veya geçerli bir belirteç döndürmeyle ilgilenebilirsiniz.
Umarım bu birine yardımcı olur. Ve eğer herhangi bir hata yaptıysam veya bir şeyi unuttuysam bana haber ver.