Veneomin
@Veneomin

Почему cookie неактивно вовремя подачи моего запроса?

Отправка запроса:
(function(){
	
	$('body').on('click', '.enter', function() {
	  
	  var username = $('.login').val(),
		  password = $('.password').val();
	  
	  var data ={
				'username': username,
				'password': password
				};
	  	
		$.ajax({
		  type: "POST",
		  url: 'login',
		  data: data,
		  success: window.location.href = 'main'
	});
	  
	});
	
})();

Мой файл login.js который обрабатывает все это:
connection.query('SELECT password FROM `users` WHERE login = "' + username +'"', function(err, rows, fields) {
		if (err) throw err;
		else if (rows.length > 0 && password == rows[0].password) {
			console.log('Hello');
			res.cookie('cookie', 'superseecret', { maxAge: 43200, httpOnly: true, signed: true })
			res.end();
		} else {
			console.log('Go away!');
			res.end();
		}
	});


И тут я рендерю новою страницу после того, как срабатывает колбек у клиента:
router.get('/main', function(req, res) {
	if (req.signedCookies.cookie == 'superseecret') {
		res.render('main', { asd:seecretData });
	} else {
		res.send('Go away!');
	}
});

Но когда пользователь попадает на /main там он видит Go away!, хотя куки в браузере есть. Если обновить страницу то все нормально. Насколько я понял - обработка /main начинается быстрее чем записывается куки. Но как такое возможно, если я перенаправляю на /main после того как мне приходить колбек succsess?
  • Вопрос задан
  • 2298 просмотров
Решения вопроса 1
@Power
У вас
{
  success: window.location.href = 'main'
}

выполняется сразу, а должно быть обёрнуто в функцию:
{
  success: function() { window.location.href = 'main'; }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы