如何访问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'