2015-06-18 7 views
0

Я использую Google auth через 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(); 
}); 
+0

пожалуйста, проверьте этот адрес http://stackoverflow.com/questions/4062260/nodejs-redirect-url – Elankeeran

+0

местоположение не нативный метод JavaScript – Elankeeran

+0

AJAX-запросы не играют очень хорошо с Сервер- переадресация. перенаправление должно произойти на стороне клиента, или вы можете удалить запрос ajax (возможно, лучший вариант) –

ответ

3

Try:

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; 
}); 
+0

Когда я смотрю в консоль, которая, похоже, сработала, поскольку правильная страница была загружена за кулисами. Однако фактическая страница никогда не обновляется. Странный. – MattDionis

+0

Я отредактировал ответ, попробуйте –

+0

спасибо, но, к сожалению, это приводит к тому, что «Can not GET/undefined». – MattDionis

Смежные вопросы