Express 未使用passport对尾声终结点进行身份验证

Express 未使用passport对尾声终结点进行身份验证,express,passport.js,sequelize.js,epilogue,Express,Passport.js,Sequelize.js,Epilogue,我的代码在下面,auth complete从未被触发。我不知道为什么,因为这是直接从尾声文件 dataplan.list.auth((req, res, context) => { console.log('authenticating') // return new Promise(function(resolve, reject) { console.log('auth with passport') passport.authenticate('jwt',{s

我的代码在下面,
auth complete
从未被触发。我不知道为什么,因为这是直接从尾声文件

dataplan.list.auth((req, res, context) => {
  console.log('authenticating')
  // return new Promise(function(resolve, reject) {
    console.log('auth with passport')
    passport.authenticate('jwt',{session: false}, function(err, user, info) {
      console.log('auth complete')
      if(err) {
        res.status(500);
        resolve(context.stop());
      }

      if(user) {
        resolve(context.continue());
      } else {
        context.error(new ForbiddenError());
      }
    });
  // }); 
})

确保在中间件功能中返回承诺。看起来你在做这件事,但把它划掉了

dataplan.list.auth((req, res, context) => {
  return new Promise(resolve => {
    passport.authenticate('jwt', (err, user, expiry) => {
      if(err) {
        res.status(500);
        return resolve(context.stop());
      }

      if(user) {
        resolve(context.continue());
      } else {
        return resolve(context.error(new ForbiddenError()));
      }
    })(req, res);
  });
});

FWIW,我最近在一个项目上使用了尾声,对此感到遗憾。我发现它有缺陷,并且不再维护回购()如果您处于项目的开始阶段,我建议重新考虑使用此库。切换到
finale rest
,它似乎更易于维护