护照js本地策略自定义callback“缺less凭据”

我有一个非常烦人的问题,节点js,expression4和护照。 我尝试了所有我能想到的选项,但仍然没有解决scheme。 找不到来自其他post的解决scheme。

码:

app.post('/login', function(req, res, next) { console.log(req.body.user_email); console.log(req.body.user_password); passport.authenticate('local', function(err, user, info) { console.log(info); ... 

问题是,出于某种原因,护照没有获得凭据,并在console.log(info)中提到“Missing credentials”,尽pipe当用户名和密码login在上面时,他们是正确的。 本地策略也应该正确configuration:

 passport.use(new LocalStrategy ({ usernameField: 'user_email', passwordField: 'user_password', }, function(username, password, done) { console.log(username); console.log(password); ... 

“function(用户名,密码,完成)”永远不会运行,因为“缺less凭据”。

有趣的部分是从另一个HTML / ejs页面,其中一个呼叫进行身份validation:

 app.post('/login_user', passport.authenticate('local', { successRedirect: '/loginSuccess', failureRedirect: '/loginFailure' })); 

问题不存在。

有人知道我在这里失踪吗?!?!

谢谢!

       

网上收集的解决方案 "护照js本地策略自定义callback“缺less凭据”"

如何格式化HTML格式的数据

在这里,我使用邮递员来展示你的问题:

在这里输入图像描述 不是很好

只是我想要的输出 只是我想要的输出

不与(req,res)closures

虽然这可能没有什么关系,但是如果我不这样做,也会出现同样的问题。

  1. 在启动passport之前调用req and res parameters
  2. closurespassport.authenticate ,用(req, res)

你需要(req, res)在你的函数的末尾,如下所示:

 router.post('/signup', (req, res, next) => passport.authenticate('whatever-your-strategy-name-is', function(err, user, info) { // Just to see the sample expected output res.send(JSON.stringify(info)).status(200) })(req, res) ); 

在标准的熟悉的JS中,它看起来像这样。

 router.post('/signup', function (req, res, next) { passport.authenticate('whatever-your-strategy-name-is', function(err, user, info) { // Just to see the sample expected output res.send(JSON.stringify(info)).status(200) })(req, res) // passport.authenticate ends here }) 

有一个小小的错误或更正需要。

你在做:

 app.post('/login', function(req, res, next) { console.log(req.body.user_email); console.log(req.body.user_password); passport.authenticate('local', function(err, user, info) { console.log(info); 

只要创build一个用户variables,并设置传入user_email&user_password如下所示。

 app.post('/login', function(req, res, next) { console.log(req.body.user_email); console.log(req.body.user_password); var user = req.body; passport.authenticate('local', function(err, user, info) { console.log(info); 

这应该工作。