我可以想到这种模式的两种常见解决方案。在其中添加 angularjs 可能会让事情变得有点复杂,但这也许会让你开始:
1)将url保存为重定向url中的查询参数
function isLoggedIn(req, res, next) {
if (req.isAuthenticated())
return next();
res.redirect('/login?fromUrl='+req.originalUrl);
}
然后登录后您将获得该值并执行重定向,如下所示:
app.post('/login', passport.authenticate('local-login'), { failureRedirect: '/login', failureFlash: true },
function(req, res) {
res.redirect(req.param('fromUrl'));
});
2)(不那么容易或可扩展)使用会话状态来存储 from-url。它可能看起来像:
function isLoggedIn(req, res, next) {
if (req.isAuthenticated())
return next();
req.session.fromUrl = req.originalUrl;
res.redirect('/login');
}
然后登录后您将获得该值并执行重定向,如下所示:
app.post('/login', passport.authenticate('local-login'), { failureRedirect: '/login', failureFlash: true },
function(req, res) {
res.redirect(req.session.fromUrl);
});