护照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' }));
问题不存在。
有人知道我在这里失踪吗?!?!
谢谢!
如何格式化HTML格式的数据
在这里,我使用邮递员来展示你的问题:
不是很好
只是我想要的输出
不与(req,res)closures
虽然这可能没有什么关系,但是如果我不这样做,也会出现同样的问题。
- 在启动passport之前调用
req and res parameters
- closures
passport.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);
这应该工作。