我有一个注册页面,其中包含电子邮件和密码字段。我还有一个用户端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");
});