Я создаю приложение корзины покупок в nodejs/expressjs. У меня возникли проблемы с перенаправлением на правильную страницу после входа пользователя. Я нашел несколько статей, которые тесно связаны, но все мои попытки исправить это из данных статей не делают трюк.Как правильно перенаправить в NodeJS/ExpressJS?
access: function(req, res){
var data = JSON.parse(req.body.data);
console.log(data);
Customers.findOne({"custEmail": data.custEmail}, function(err, user){
if(err){
console.log(err);
res.send("error");
}if(!user){
console.log("user not found");
res.send("error");
}else{
console.log("user found");
bcrypt.compare(data.custPassword, user.custPassword, function(err, reponse){
if(reponse){
req.session.regenerate(function(err){
if(err){
console.log(err);
res.send("error");
}else{
req.session.success = true;
res.send("Success");
//res.redirect('/');
}
});
}else{
console.log("error");
}
});
}
});
Что происходит, пользователь вводит свою регистрационную информацию и нажимает кнопку входа в систему. Запрос Ajax отправляет данные этой функции доступа. Функция начинается с проверки, существует ли пользователь в базе данных. Если он делает, чем он продолжает сравнивать пароль bcrypt, если они равны, они успешно авторизуются и если они не равны, то, очевидно, это ошибки.
Вопрос, кажется, здесь: }else{ req.session.success = true; res.send("Success"); //res.redirect('/'); }
Когда электронная почта пользователя и пароль соответствуют этим ударил прямо здесь. Он говорит: установите для этого сеанса значение true, чтобы пользователь мог получить доступ к страницам, где требуется этот сеанс, а затем отправляет сообщение «Успешное» обратно на запрос ajax. В настоящее время это работает отлично, и res.send отправляется на передний план. Когда я раскомментирую res.redirect, произойдет ожидаемый результат «невозможно установить заголовки после их установки». Поэтому, когда я комментирую res.send, res.redirect просто не работает вообще. Никакой ошибки, никакого нарушения ничего просто просто ничего.
Мне любопытно, почему этот перенаправление здесь не работает? Заголовки не устанавливаются нигде в этой функции, и ожидаемым результатом должно быть то, что перенаправление будет работать отлично. Любая помощь приветствуется. Благодарю.
HEY THANK YOU. Для меня было достаточно первого первого resposne. Я закончил тем, что просто удалил запрос Ajax, потому что он не был на 100% необходимым. Мне просто нравится, как работает Ajax, поэтому я бы использовал его здесь. Вместо этого я достал Ajax и просто схватил req.body.data со страницы при отправке формы. Тогда было так же просто, как разместить правильную переадресацию. Цените свой своевременный и чрезвычайно полезный ответ! – Zgbrell
Я не хочу изменять или удалять что-либо из вашего ответа .. если вы хотите смело отнести это утверждение: перенаправления обычно не применяются к вызовам ajax, потому что браузер не обрабатывает их при вызове ajax (браузер обрабатывает перенаправления на странице загрузка или ответ на сообщение формы). в вашем ответе было бы отлично. Это предложение само по себе помогло мне решить просто не использовать Ajax в этом конкретном случае. – Zgbrell
Вы тоже посмотрите на это сообщение? [Ссылка] (http://stackoverflow.com/questions/41089118/how-to-make-a-successful-ajax-request-using-javascript-on-page-load) – Zgbrell