簡體   English   中英

Express req.body為空。 這是這樣做的最好方法嗎?

[英]Express req.body is empty. Is this the best way to be doing this?

我是表達和嘗試實現基本登錄功能的新手,但是我對傳遞數據有些困惑。 我有幾個方面似乎使我感到困惑。

  1. 我將輸入值存儲在發布到/ login的$scope.formdata對象中。 有沒有一種方法可以在我的快速后端中訪問此對象。

  2. 我不太確定為什么在這段代碼中未定義req.body。

     app.get('/success', function(req, res){ //console.log(req.body); res.json(req.user); 

    });

這是明確的后端和角度代碼,如下所示:

module.exports = function(app, passport){

//index page - main login page
app.get('/login', function(req, res){
    res.render('index.ejs');
});

app.post('/login', passport.authenticate('local-login', {
    successRedirect: '/success',
    failureRedirect: '/failure',
}));


app.get('/success', function(req, res){
    //console.log(req.body);
    res.json(req.user);
});

app.get('/failure', function(req, res){
    res.send('Failed');
});

};

    $scope.login = function(){
    $http.post('/login', $scope.formdata)
    .success(function (data){
        console.log(data);
    })
    .error(function (data){
        console.log(data);
    });
}

成功登錄后,我只想重定向到新頁面並顯示“你好,用戶名”

除上述答案外,passport不會將req.body對象傳遞到/success路由。 成功認證后將調用此路由,它不會將原始請求正文傳遞給它。 從護照的文檔開始 ,調用此函數后,您將可以訪問req.user對象,但不能req.body最初發布的req.body 也沒有理由:此時,您應該在req.user具有反序列化的用戶對象

app.post('/login',
  passport.authenticate('local'),
  function(req, res) {
    // If this function gets called, authentication was successful.
    // `req.user` contains the authenticated user.
    res.redirect('/users/' + req.user.username);
  });

您應該使用主體解析中間件,否則req.body對象將是undefined

例:

var app = require('express')();
var bodyParser = require('body-parser');
var multer = require('multer'); 

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
app.use(multer()); // for parsing multipart/form-data

app.post('/', function (req, res) {
  console.log(req.body);
  res.json(req.body);
})

文檔: http : //expressjs.com/api.html#req.body

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM