【问题标题】:Ajax call to passport does not run the authenticate middleware对护照的 Ajax 调用不运行身份验证中间件
【发布时间】:2017-12-10 02:12:08
【问题描述】:

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

    $("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 });
    });

Passport.authenticate 函数在 ajax 调用的情况下不会调用中间件函数,但是如果页面是使用表单提交的,那么它就可以完美地工作。

【问题讨论】:

  • 你能告诉我们你的要求吗
  • @IvanMladenov 我已经添加了请求。请帮忙

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


【解决方案1】:

你要验证的函数是

passport.authenticate('local');

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

【讨论】:

    猜你喜欢
    • 2017-10-24
    • 2018-11-06
    • 2021-07-05
    • 2015-09-06
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 2016-10-02
    相关资源
    最近更新 更多