Паспортная аутентификация не вызывается - PullRequest
0 голосов
/ 28 мая 2018

У меня есть код в маршрутизаторе

router.post('/auth', function(req, res) {
    oauth.auth(req, res);
});

, правильно нажимающий

accesstokenController.auth = function(req, res) {
  console.log('Here auth called');
    passport.initialize(), passport.authenticate(
      'local', {
        session: false,
        scope: []
      },(req,res)), serialize, generateToken, respond
  };

(req, res), добавленный после получения ссылки, предлагающей это

Я полагаю, что теперь он должен позвонить

passport.use(new Strategy(
  function(username, password, done) {
    console.log('Here pass called with ' + username + ' - ' + password);
    db.authenticate(username, password, done);
  }
));

Но он никогда не будет звонить, и тайм-аут произошел.

Если Id точно позвонить как этот

app.post('/auth', passport.initialize(), passport.authenticate('local', { session: false,scope: [] }), serialize, generateToken, respond);

это нормально,

В моем методе выше

accesstokenController.auth = function(req, res) {
      console.log('Here auth called');
        passport.initialize(), passport.authenticate(
          'local', {
            session: false,
            scope: []
          },(req,res)), serialize, generateToken, respond
      };

Я только что создал отдельный метод и вызвал его со страницы маршрутизатора, а не вызывал его itslef

Чего мне не хватает

Другой код

const db = {
    updateOrCreate: function(user, cb) {
      cb(null, user);
    },
    authenticate: function(username, password, cb) {
      console.log('Here called');
      User.findOne({ username: username,
        password: password }).exec(function (err, user) {
        if (err) {
          cb(null,null);
        }
        else {
          cb(null,user);
        }
      });
    }
  }

function serialize(req, res, next) {
  console.log('Here pass called with ser ');
  db.updateOrCreate(req.user, function(err, user) {
    if (err) {
      return next(err);
    }
    // we store information needed in token in req.user again
    req.user = {
      id: user.id
    };
    next();
  });
}

function generateToken(req, res, next) {
  req.token = jwt.sign({
    id: req.user.id,
  }, SECRET, {
    expiresIn: TOKENTIME
  });
  next();
}

function respond(req, res) {
  res.status(200).json({
    user: req.user,
    token: req.token
  });
}

У меня есть много ссылок, связанных с этим, но мне не удалось решить эту проблему

1 Ответ

0 голосов
/ 28 мая 2018

Ваша стратегия должна вернуть done(), без которого Стратегия не знает, когда она будет завершена, что приведет к тайм-ауту.

Трудно сказать, является ли это точной проблемой без дальнейшего контекста.

...