如何将最后访问的URL传递给passport.authenticate
在我的应用程序的登录路由中,我使用的是passport.authenticate()方法:
router.post("/login", passport.authenticate("local",
{
successRedirect: "/",
failureRedirect: "/login"
}), function(req, res){ });
但是只实现了固定重定向网址。我想将最后访问过的路由地址 - url传递给此进程,但在此实现中,authenticate()方法未接受请求和响应参数。
回答如下:您可以使用“req.url”获取当前URL并在将用户重定向到/ login之前保存到会话中
req.session.recentUrl = req.url
res.send()
现在修改/登录路由到
router.post("/login", passport.authenticate("local",{
successRedirect: req.session.recentUrl,
failureRedirect: "/login"
}), function(req, res){ });
注意:确保在适当处理后清除req.session.recentUrl。
编辑:req没有定义你在路线后的这个中间件。
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/jaredhanson/passport/issues/1