90

パスポートローカルを組み合わせて、認証の成功時に JWT トークンを返すにはどうすればよいですか?

node-jwt-simpleを使用したいのですが、 passport.jsを見てどうすればよいかわかりません。

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

done() を呼び出すときにトークンを返すことは可能ですか? このようなもの...(単なる擬似コード)

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

そうでない場合、どうすればトークンを返却できますか?

4

3 に答える 3

19

これは素晴らしい解決策です。これを追加したいだけです:

var expressJwt = require('express-jwt');

app.use('/api', expressJwt({secret: secret}));

「express-jwt」を使用してトークンを検証するのが好きです。

ところで: この記事は、Angular を使用してクライアント側でトークンを処理し、すべてのリクエストでトークンを送り返す方法を学ぶのに最適です。

https://auth0.com/blog/2014/01/07/angularjs-authentication-with-cookies-vs-token/

于 2014-08-15T17:19:25.770 に答える
4

これは、特にAPIトークンのみを使用するために取り組んでいるボイラープレートです(セッションはありません...もちろんそのセッションは悪くありません;トークンアプローチを使用しているだけです): https://github.com/roblevintennis/passport -API トークン

于 2013-12-14T17:44:12.083 に答える