我正在尝试使用passport提交登录表单后访问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参数呢?
/login
路由稍高一点的位置。现在req.param('remember')
正常工作了,但是我仍然无法在那个路由中访问用户名和密码字段。当我尝试访问req.param('username')
或req.param('password')
时,用户名和密码都是未定义的。可能是因为passport在检查完参数后删除了它们吗? - Manuel Biehreq
变量:console.log(req)
- drinchev