简体   繁体   中英

Unable to make HTTP post request

I am trying to login using HTTP post request.

app.js

//login
app.get('/login', indexRouter); // call to login site
app.post('/login',indexRouter); // post to /users/login site

users.js

router.get('/', function(req, res, next) {
    var message = '';
   var sess = req.session; 

   if(req.method == "POST"){
      var post  = req.body;
      var name= post.user_name;
      var pass= post.password;

      var sql="SELECT id, first_name, last_name, user_name FROM `users` WHERE `user_name`='"+name+"' and password = '"+pass+"'";                           
      db.query(sql, function(err, results){      
         if(results.length){
            req.session.userId = results[0].id;
            req.session.user = results[0];
            console.log(results[0].id);
            res.redirect('/users/home/dashboard');
         }
         else{
            message = 'Wrong Credentials.';
            res.render('index.ejs',{message: message});
         }

      });
   } else {
      res.render('index.ejs',{message: message});
   }         
}); 

When I click on login, it directs me to http://localhost:3000/login with an Eror 404 not found. I am loggin in from my homepage http://localhost:3000 .

Am I doing the POST request wrongly ?

You need to divide the router into two methods: router.get and router.post . For example:

// app.js
// login
app.use('/login', indexRouter); 

// users.js
// call to login site
router.get('/', function(req, res, next) {
  var message = '';
  var sess = req.session; 
  res.render('index.ejs',{message: message});
});

// users.js
// post to /users/login site
router.post('/', function(req, res, next) {
  var message = '';
  var sess = req.session; 

  var post  = req.body;
  var name= post.user_name;
  var pass= post.password;

  var sql="SELECT id, first_name, last_name, user_name FROM `users` WHERE `user_name`='"+name+"' and password = '"+pass+"'";                           
  db.query(sql, function(err, results){      
     if(results.length){
        req.session.userId = results[0].id;
        req.session.user = results[0];
        console.log(results[0].id);
        res.redirect('/users/home/dashboard');
     }
     else{
        message = 'Wrong Credentials.';
        res.render('index.ejs',{message: message});
     }
  });
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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