SORU
26 Kasım 2013, Salı


pasaport-yerel düğüm-jwt-basit

Nasıl yerel bir pasaport JWT başarılı kimlik belirteci dönmek için birleştirebilir miyim?

node-jwt-simple passport.js hakkında gitmek nasıl emin değilim aramasını istiyorum.

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);
    });
  }
));

Bitti demeyi ne zaman belirteci dönmesi mümkün (?) Böyle bir şey... (sahte kod)

if(User.validCredentials(username, password)) {
  var token = jwt.encode({username: username}, tokenSecret);
  done(null, {token : token}); //is this possible?
}

Nasıl token iade edebilir miyim?

Şimdiden teşekkürler! :)

/chris

CEVAP
28 Kasım 2013, PERŞEMBE


Ben bir yolunu buldum!

Öncelikle doğru strateji uygulamak gerekir. Benim durumumda LocalStrategy ve doğrulama mantığını sağlamak gerekir. Örneğin hatırı pasaport-yerel bir 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);
    });
  }
));

doğrulamak function(username, password, done) kullanıcı bulma ve şifreyi eğer eşleşirse kontrol ilgilenecek sağlamak Ara (soru kapsamı ve cevabımı ötesinde)

passport.js işe yaraması için birkaç parça bekliyor, bir strateji olarak kullanıcı geri. Kodun o kısmını değiştirmeye çalışıyordum, ve bu yanlıştı. Geri eğer doğrulama başarısız olursa false ve eğer başarılı olursa object (doğrulanmış kullanıcı) bekliyor.

...Şimdi. nasıl JWT entegre?

Giriş rotanızı başarılı bir auth ya da başarısız bir ele almak gerekir. Ve JWT simge oluşturma eklemek gerekir burada. Bunun gibi

(oturum devre dışı bırakmak için unutmayın, aksi halde seri hale getirmek uygulamak ve fonksiyonları serisini olacak. Ve eğer varsa belirteç tabanlı kimlik doğrulaması kullanıyorsanız değildir oturumu, kalıcı değilse bu ihtiyacı falan yok

Pasaport-yerel örnekler: JWT token eklenen ()

// POST /login
//   This is an alternative implementation that uses a custom callback to
//   achieve the same functionality.
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' });
    }

    //user has authenticated correctly thus we create a JWT token 
    var token = jwt.encode({ username: 'somedata'}, tokenSecret);
    res.json({ token : token });

  })(req, res, next);
});

Olay bu! Şimdi ne zaman çağrı /giriş ve SONRASI kullanıcı adı ve şifre (her zaman üzerinde SSL) ilk kod parçası yukarıda olacak bulmak için Kullanıcı tabanlı kullanıcı adını verdiğiniz edin ve parola ile eşleşir (elbette gerekir değiştirmek için uygun ihtiyaçları).

Bundan sonra giriş rotanızı çağrılır ve orada bir hata ya da geçerli bir simge dönen bakabilirsin.

Bu kimse yardımcı olur umarım. Ve eğer herhangi bir hata yaptıysam ya da unuttuğu bir şey bana bildirin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Julia Graf

    Julia Graf

    6 Mayıs 2006
  • magnum33563

    magnum33563

    8 NİSAN 2011
  • Make:

    Make:

    23 Mart 2006