在应用程序的登录路径中,我使用的是password.authenticate()方法:
router.post("/login", passport.authenticate("local",
{
successRedirect: "/",
failureRedirect: "/login"
}), function(req, res){ });
但是仅实现了固定重定向URL。我想将上次访问的路由地址-url传递给此过程,但是在此实现中,authenticate()方法未采用请求和响应参数。
答案 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