[英]Express req.body is empty. Is this the best way to be doing this?
我是表達和嘗試實現基本登錄功能的新手,但是我對傳遞數據有些困惑。 我有幾個方面似乎使我感到困惑。
我將輸入值存儲在發布到/ login的$scope.formdata
對象中。 有沒有一種方法可以在我的快速后端中訪問此對象。
我不太確定為什么在這段代碼中未定義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);
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.