提交用户输入的发布请求出现403错误

时间:2019-06-29 08:57:35

标签: node.js ajax passport.js express-validator

我有一个注册页面,其中包含电子邮件和密码字段。我还有一个用户端script.js文件,该文件检测输入字段的值并通过“ post”请求发送它们。

但是,当我同时输入两个字段并单击sign up时,终端将显示POST /user/signup 403,浏览器将一直加载直到超时。似乎有些东西阻止了代码访问路由,但我不知道是什么。

我将express-validator 6.0.1passport.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");
});

0 个答案:

没有答案