如何访问node.js护照身份validation的POST数据?

我试图在提交护照login表单后访问POST参数。 我的表格如下:

<form method="post"> <input name="username"> <input name="password"> <input type="checkbox" name="remember" value="1"> <input type="submit"> </form> 

(工作)快速路线/callback:

 app.post( '/login', passport.authenticate('local', { failureRedirect: '/login', failureFlash: true, badRequestMessage: 'Please enter your account credentials to login.' }), function(req, res) { console.log(req.param('remember')); if(req.isAuthenticated(req, res)) { res.redirect('/dashboard'); } else { var errors = req.flash('error'); if(errors) { assign['errors'] = errors; } res.render('login.html', {errors: errors}); } } ); 

login工作正常,一切都很酷。 但是: req.param('remember')总是undefined 。 当我删除passport.authenticate()部分,检查我的表单中的checkbox,并提交表单控制台正确的日志1

那么当我也使用passport.authenticate()时,如何访问POST参数呢?

到目前为止还没有使用护照,但这里有两件事情可能会导致你的问题

1.您的表单没有action属性

因此表单不知道在哪里发送数据。 尝试以下

 <form method="post" action="/login"> <input name="username"> <input name="password"> <input type="checkbox" name="remember" value="1"> <input type="submit"> </form> 

2. express中的POSTvariables附加到req.body对象

所以,而不是

 console.log(req.param('remember')); 

使用

 console.log(req.body.username); 

确保你有明确的configurationbodyParser 。

当你想访问dynamic路由时使用req.param

 app.get('/login/:user', function(req, res) { console.log(req.params.user) }) // GET /login/john => 'john'