我在提交带护照的登录表单后尝试访问POST参数。我的表格如下:
<form method="post">
<input name="username">
<input name="password">
<input type="checkbox" name="remember" value="1">
<input type="submit">
</form>
(工作)快速路线/回调:
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});
}
}
);
登录工作正常,一切都很酷。但是:req.param('remember')
始终为undefined
。当我删除passport.authenticate()部分时,选中我表单中的复选框并正确提交表单控制台记录1
。
那么当我还使用passport.authenticate()时如何访问POST参数?
答案 0 :(得分:1)
到目前为止还没有使用过护照,但这有两件事可能会导致你的问题
<强> 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。快递中的POST变量附加到req.body
对象
所以而不是
console.log(req.param('remember'));
使用
console.log(req.body.username);
确保您的快速配置中有bodyParser。
当您想要访问动态路由时使用 req.param
app.get('/login/:user', function(req, res) {
console.log(req.params.user)
})
// GET /login/john => 'john'