如何使用 express 确定节点 js 中的特定 successRedirect?

How to determine specific successRedirect in node js using express?

我对 passport.authenticate 中的 successRedirecting 有疑问。 我在 nodejs 中使用 passport.js 和本地策略并表示用户登录并尝试创建特定的 successRedirect 路由。

比如我用用户id登录:gpaul(假装登录成功),那么successRedirect route就是'?channel=gpaul'。

我编写了如下代码

var data_1 = {email:''};
app.post('/login',
  function (req,res,next){
    req.flash("email");
    data_1.email = req.body.email;
    console.log(data_1.email);
    next();
  }, passport.authenticate('local-login', {
    successRedirect : ('/status.html?channel='+ data_1.email),
    failureRedirect : '/login',
    failureFlash : true
  })
);

执行上述代码后,地址为空白, localhost:4000/?频道= 如何将 data_1.email 放入 successRedirect?

有没有人对此有任何想法...? 请帮帮我..

谢谢。

尝试使用 Custom Callback :

app.post('/login', function(req, res, next) {
passport.authenticate('local-login', function(err, user, info) {
  if (err) { return next(err); }
  if (!user) { return res.redirect('/login'); }
  return res.redirect('/status.html?channel='+ req.body.email);
  })(req, res, next);
});

在此实现中,回调可以通过闭包访问 reqres 对象。因此,email 不会为空(与您的实现不同)