繁体   English   中英

对护照的Ajax调用未运行身份验证中间件

[英]Ajax call to passport does not run the authenticate middleware

这是请求身份验证的客户端代码

    $("form#login-form").on("click", "#submit", function (e) {
      e.preventDefault();
      $.ajax({
        url: "/login",
        type: "POST",
        data: JSON.stringify({ email: $("#email").val(), password: $("#password").val() }),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
      }).done(function (response, textStatus, jqXHR) {

        utils.clearErrors();
        location.reload();
      }).fail(function (jqXHR, textStatus, errorThrown) {

        // handle the error
        utils.handleError(jqXHR, textStatus, errorThrown);
      })
    });

以下是用于护照认证的节点API

    app.post('/login', passport.authenticate('local-login'), (req, res, next) => {
      return res.json({ user: req.user });
    });

如果进行ajax调用,Passport.authenticate函数不会调用中间件函数,但是如果页面是使用表单提交的,则它可以正常工作。

您调用的用于身份验证的功能是

passport.authenticate('local');

它也取决于您包含的模块。 请在https://github.com/rupalipemare/Mongoose-Demo上检查此处的代码,其中有完整的示例说明护照认证。 希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM