如何将上次访问的URL传递给password.authenticate-Node.js Express应用

时间:2019-02-16 11:49:05

标签: node.js express session authentication passport.js

在应用程序的登录路径中,我使用的是password.authenticate()方法:

router.post("/login", passport.authenticate("local", 
    {
        successRedirect: "/",
        failureRedirect: "/login"
    }), function(req, res){ });

但是仅实现了固定重定向URL。我想将上次访问的路由地址-url传递给此过程,但是在此实现中,authenticate()方法未采用请求和响应参数。

1 个答案:

答案 0 :(得分:0)

您可以使用“ req.url”获取当前网址,并在将用户重定向到/ login之前保存到会话中

req.session.recentUrl = req.url
res.send()

现在将/ login路由修改为

router.post("/login", passport.authenticate("local",{
        successRedirect: req.session.recentUrl,
        failureRedirect: "/login"
}), function(req, res){ });

注意:请确保在正确处理后清除req.session.recentUrl。

编辑:未定义要求 您发布路线的中间件。

app.get('/protected', function(req, res, next) {
  passport.authenticate('local', function(err, user, profile) {
    if (err) { return next(err) }
    if (!user) { return res.redirect('/signin') }
    res.redirect('/account');
  })(req, res, next);
});

此问题已解决,更多信息:https://github.com/jaredhanson/passport/issues/1