【问题标题】:Epilogue endpoints are not being authenticated with passportEpilogue 端点未通过护照进行身份验证
【发布时间】:2018-03-06 23:47:56
【问题描述】:

我的代码在下面,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());
      }
    });
  // }); 
})

【问题讨论】:

  • FWIW,我最近在一个项目中使用了 Epilogue,并后悔了。我发现它有问题,并且不再维护 repo (github.com/dchester/epilogue/issues/225) 如果您处于项目的开始阶段,我建议您重新考虑使用这个库。
  • 切换到finale-rest,好像维护的比较多

标签: express passport.js sequelize.js epilogue


【解决方案1】:

确保您在中间件函数中返回了一个承诺。看起来你正在这样做,但它被划掉了。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 2016-10-02
    • 2019-06-14
    • 2018-11-06
    • 2019-01-01
    • 2019-06-15
    • 1970-01-01
    相关资源
    最近更新 更多