Отправка запроса:
(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?