【问题标题】:Re-handle request after changes更改后重新处理请求
【发布时间】:2018-08-21 21:04:54
【问题描述】:

我正在尝试以通用方式使用 passport.js,在调用 authenticate 之前更改配置,但之后我找不到将请求重定向到它的方法。

我这样处理请求:

入口点

app.get('/authorize/:clientId/:network', authUtils.authorize);

处理程序

async function authorize(request, response, next) {
  try {
    let clientId = request.params.clientId;
    let network = request.params.network;

    config = await databaseUtils.getConfig(clientId, network);

    if(typeof(config) !== 'undefined') {
      passport.use(new FacebookStrategy({
        clientID: config.appId,
        clientSecret: config.appSecretKey,
        callbackURL: 'https://127.0.0.1/' + network + '/authCallback/'
      }, function(accessToken, refreshToken, profile, cb) {
        return {accessToken, refreshToken, profile, cb};
      }));

      // Here's where I should re-handle request
      passport.authenticate(network);
    } else {
      throw new Error(network + ' is not configured');
    }
  } catch (e) {
    throw e;
  }
}

我确信使用passport.authenticate('network') 作为请求处理程序是可行的,但我想将其设为通用,以便我可以使用不同的社交网络。

有没有办法在 NodeJS/Express 中“重新处理”请求?

【问题讨论】:

    标签: node.js express passport.js handler


    【解决方案1】:

    由于中间件的所有步骤都应该返回一个带有3个参数的函数,也许你可以用这3个参数调用它返回的内容:

    return passport.authenticate(network)(request, response, next);

    【讨论】:

    • 第一个选项永远不会结束请求。第二种选择……先生,您真是个天才!太感谢了!我已经为此奋斗了大约一个星期!
    • 太棒了:)。我要为同样的问题添加下一个答案:)
    猜你喜欢
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    相关资源
    最近更新 更多