У меня есть страница регистрации с адресом электронной почты и паролем.У меня также есть файл script.js
на стороне пользователя, который определяет значение полей ввода и отправляет их с помощью запроса post.
Однако, когда я вхожу в оба поля и нажимаю sign up
, терминал показывает POST /user/signup 403
и браузер просто продолжает загружаться до истечения времени ожидания.Кажется, что-то мешает коду получить доступ к маршруту, но я не знаю, что.
Я использую express-validator 6.0.1
с passport.js
.
Помощь очень ценится.Спасибо.
script.js:
$('#signup-btn').click(function () {
$.ajax({
url: '/user/signup',
type: 'POST',
cache: false,
data: {
email: $('#email').val(),
password: $('#password').val()
},
success: function () {
$('#error-group').css('display', 'none');
alert('Successfully signed up');
},
error: function (data) {
$('#error-group').css('display', 'block');
var errors = JSON.parse(data.responseText);
var errorsContainer = $('#errors');
errorsContainer.innerHTML = '';
var errorsList = '';
for (var i = 0; i < errors.length; i++) {
errorsList += '<li>' + errors[i].msg + '</li>';
}
errorsContainer.html(errorsList);
}
});
});
маршруты:
router.post("/user/signup",
[
check('email', 'Your email is not valid').not().isEmpty().isEmail().normalizeEmail(),
check('password', 'Your password must be at least 5 characters').not().isEmpty().isLength({min: 5})
],
function (req, res) {
const errors = validationResult(req);
console.log(req.body);
if (!errors.isEmpty()) {
return res.status(422).jsonp(errors.array());
} else {
passport.authenticate("local.signup", {
successRedirect: "/user/profile",
failureRedirect: "/user/signup",
failureFlash: true
});
}
});
router.get("/user/profile", (req, res, next) => {
res.render("user/profile");
});