Ajax呼叫护照不运行身份验证中间件

时间:2017-07-06 07:41:49

标签: javascript node.js express passport.js passport-local

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

    $("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函数不会调用中间件函数,但如果使用表单提交页面,那么它可以正常工作。

1 个答案:

答案 0 :(得分:0)

您要求进行身份验证的功能是

passport.authenticate('local');

它依赖于您所包含的模块。 请查看https://github.com/rupalipemare/Mongoose-Demo上的代码,其中有完整的示例演示护照身份验证。希望这有帮助