Node.js + express + passport(后端)/ jQuery(前端)

时间:2017-05-13 19:31:46

标签: javascript jquery node.js express passport.js

我正在使用html / css + javascript / jQuery对网站进行编码。

目前,我正在进行注册+登录/注销服务,但我被卡住了。

这是我用于登录的jQuery代码(前端):

// Login form
$(function() {
  $('#login_btn').click(function() {
    $.ajax({
      url : '/login',
      type : 'POST',
      dataType : 'json',
      data : {
        username : $('#login_username').val(),
        password : $('#login_password').val()
      },
      cache : false,
      timeout : 5000,

      success: function(data) {
        if (data.reponse == 'success') {
          createCookie('token', data.token, 7);
          $.ajax({
            url :"/account",
            type:'GET',
            headers : { "Authorization" : readCookie('token') },
            dataType: 'json',
            data: {
              role: data.role
            },

            success: function(data, status) {
              console.log("Status " + status);
              console.log(data);
            }
          });
        }
        else {
          if (data.msg == 'user not found') {
            display_login_alert(false, 'user_not_found');
          }
          else if (data.msg == 'wrong password') {
            display_login_alert(false, 'wrong_password');
          }
          else {
            display_login_alert(false, 'unknown');
          }
        }
      },

      error: function() {
        display_login_alert(false, 'unknown');
      }
    });
  });
});

这是我的node.js + express +护照代码(后端):

app.post('/login', (req, res) => {
  User.findOne({
    username: req.body.username
  }, (err, user) => {
    if (err)
    throw err;
    if (!user) {
  res.send({reponse: 'error', msg: 'user not found'});
    }
    else {
      // check if password matches
      user.comparePassword(req.body.password, (err, isMatch) => {
        if (isMatch && !err) {
          // if user is found and password is right create a token
          var token = jwt.sign(user, config.secret, { expiresIn: 21600 });
          // return the information including token as JSON
          res.json({
            reponse: 'success',
            token: 'JWT ' + token,
            profile: user.profile,
            role: user.role
          });
        }
        else {
          res.send({reponse: 'error', msg: 'wrong password'});
        }
      });
    }
  });
});

app.get('/account', passport.authenticate('jwt', { session: false }), (req, res) => {
  var token = getToken(req.headers);
  if (token) {
    jwt.verify(token, config.secret, function(err, decoded){
      if (err) {
        return res.redirect("/");
      }
      else if (req.user.role != "Owner") {
        return res.redirect("/");
      }
      else {
        req.decoded = decoded;
        res.sendFile('/.../account.html'); // /.../ : file path is good
      }
    });
  }
});

问题在于,当我使用邮递员时,一切都很好。 但是,当我点击我网站上的登录按钮时,没有任何反应,并且没有错误

有人可以帮助我吗?

0 个答案:

没有答案