Межпрограммное обеспечение аутентификации паспорта не определено - PullRequest
0 голосов
/ 04 июня 2018

У меня есть код ниже

passport.use(new LocalStrategy({
  usernameField: 'username',
  passwordField: 'password',
  passReqToCallback: true
},
 function(req,username, password, next) {
     console.log('req' + req.body.socialID );
   var res ="";
  userController.ValidateLogin(req,res,function(userDetails){
    console.log('g d' + userDetails);
    req.user = userDetails;
    return next(null,userDetails);
    });


 }));

У меня есть ответ на запрос от usercontroller.validatelogin, если есть какая-либо ошибка, такая как

return res.send({ Status:403, Msg: 'There was a problem while fetching the record' });

Она говорит, что res.send не метод.Как передать res в usercontroller.validatelogin для возврата ответа.

1 Ответ

0 голосов
/ 04 июня 2018

Я считаю, что когда вы используете паспортную стратегию, вы должны вернуть done().Там вы можете передать пользователя, если ваш пользователь подтвержден.Например, если вы проверили, что в БД нет ни одного пользователя, а затем успешно его создали, вы можете сделать

return done(null, user, { message: "Hello user from db" });

, а если имя пользователя было взято, вы передаете false для пользователя:

return done(null, false, { message: "User exists . Try again" }); 

тогда на вашем маршруте вы можете сделать

app.get("/route", (req, res, next) => {
  passport.authenticate(strategyName, function (err, user, info) { 

 /*now you have access to res and now you can do if condition to do 
  stuff when there is a user don't forget to do req.login() */ 

})

Чтобы ответить на ваш вопрос, нет добавления res в passport.use Я думаю, что они имеют только passReqToCallback, поэтому вы можете использовать только req

...