Javascript 身份验证后将用户重定向到上一页

Javascript 身份验证后将用户重定向到上一页,javascript,node.js,express,passport.js,Javascript,Node.js,Express,Passport.js,我在我的应用程序中使用Google auth-through Passport,我试图在成功登录后将用户重定向回他们请求的原始页面。我认为location.reload()可能是问题所在,但不确定如何解决 routes.js: router.post('/auth/google/return', passport.authenticate('google'), function(req, res) { res.redirect(req.session.returnTo); req.ses

我在我的应用程序中使用Google auth-through Passport,我试图在成功登录后将用户重定向回他们请求的原始页面。我认为
location.reload()
可能是问题所在,但不确定如何解决

routes.js:

router.post('/auth/google/return', passport.authenticate('google'), function(req, res) {
  res.redirect(req.session.returnTo);
  req.session.returnTo = null;
});
middleware.js:

var isAuth = function(req, res, next) {
  if (req.isAuthenticated()) {
    return next();
  } else {
    req.session.returnTo = req.url;
    return res.redirect('/');
  }
};
单击按钮时调用:

$.post('/auth/google/return', {code: authResult.code, access_token: authResult.access_token}).done(function(data) {
    location.reload();
});
尝试:

以及:

尝试:

以及:

尝试:

以及:

尝试:

以及:



请检查此url位置是否不是本机JavaScript方法Ajax请求与服务器端重定向不匹配。重定向必须在客户端进行,或者,您可以删除ajax请求(可能是更好的选择)请检查此url位置不是本机JavaScript方法ajax请求与服务器端重定向的效果不太好。重定向必须在客户端进行,或者,您可以删除ajax请求(可能是更好的选择)请检查此url位置不是本机JavaScript方法ajax请求与服务器端重定向的效果不太好。重定向必须在客户端进行,或者,您可以删除ajax请求(可能是更好的选择)请检查此url位置不是本机JavaScript方法ajax请求与服务器端重定向的效果不太好。重定向必须在客户端进行,或者,当我查看控制台时,您可以删除ajax请求(可能是更好的选择),因为正确的页面是在后台加载的。但实际页面从未更新。奇怪。谢谢,但不幸的是,这会导致“无法获取/未定义”。有趣的是,当我
console.log(data)
代替
window.location.href=data.redir时,我看到了我希望看到的页面的所有HTML。这可能是因为我正在使用Jade来提供HTML文件吗?您是否也用这个
res.json({redir:backURL})更改了节点部分?想法是将json格式的url字符串发送到post响应,并在我查看控制台时将其用于window.location.hrefWhen,因为正确的页面是在后台加载的。但实际页面从未更新。奇怪。谢谢,但不幸的是,这会导致“无法获取/未定义”。有趣的是,当我
console.log(data)
代替
window.location.href=data.redir时,我看到了我希望看到的页面的所有HTML。这可能是因为我正在使用Jade来提供HTML文件吗?您是否也用这个
res.json({redir:backURL})更改了节点部分?想法是将json格式的url字符串发送到post响应,并在我查看控制台时将其用于window.location.hrefWhen,因为正确的页面是在后台加载的。但实际页面从未更新。奇怪。谢谢,但不幸的是,这会导致“无法获取/未定义”。有趣的是,当我
console.log(data)
代替
window.location.href=data.redir时,我看到了我希望看到的页面的所有HTML。这可能是因为我正在使用Jade来提供HTML文件吗?您是否也用这个
res.json({redir:backURL})更改了节点部分?想法是将json格式的url字符串发送到post响应,并在我查看控制台时将其用于window.location.hrefWhen,因为正确的页面是在后台加载的。但实际页面从未更新。奇怪。谢谢,但不幸的是,这会导致“无法获取/未定义”。有趣的是,当我
console.log(data)
代替
window.location.href=data.redir时,我看到了我希望看到的页面的所有HTML。这可能是因为我正在使用Jade来提供HTML文件吗?您是否也用这个
res.json({redir:backURL})更改了节点部分?想法是将json格式的url字符串发送到post响应,并将其用于window.location.href
router.post('/auth/google/return', passport.authenticate('google'), function(req, res) {
   var backURL = req.header('Referer') || '/';
   res.json({redir: backURL});
});
$.post('/auth/google/return', {code: authResult.code, access_token: authResult.access_token}).done(function(data) {
    window.location.href = data.redir;
});