【发布时间】:2015-06-18 17:08:59
【问题描述】:
我在我的应用程序中通过 Passport 使用 Google 身份验证,并尝试将用户重定向回他们在成功登录后请求的原始页面。我认为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();
});
【问题讨论】:
-
位置不是原生 JavaScript 方法
-
ajax 请求不能很好地与服务器端重定向配合使用。重定向必须在客户端发生,或者,您可以删除 ajax 请求(可能是更好的选择)
标签: javascript node.js express passport.js