【发布时间】:2015-07-20 14:53:20
【问题描述】:
我有一个非常烦人的 Node js、express 4 和护照问题。我已经尝试了所有我能想到的选项,但仍然没有解决方案。无法从其他帖子中找到解决此问题的方法。
代码:
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);
...
问题是由于某种原因,passport 没有获取凭据并在 console.log(info) 中显示“缺少凭据”,尽管在上面记录了用户名和密码时它们是正确的。本地策略也应该正确配置:
passport.use(new LocalStrategy ({
usernameField: 'user_email',
passwordField: 'user_password',
},
function(username, password, done) {
console.log(username);
console.log(password);
...
“功能(用户名,密码,完成)”永远不会运行,因为“缺少凭据”。
有趣的是,来自另一个 html/ejs 页面的身份验证调用是:
app.post('/login_user', passport.authenticate('local', { successRedirect: '/loginSuccess', failureRedirect: '/loginFailure' }));
问题不存在。
有人知道我在这里想念什么吗?!?!
谢谢!
【问题讨论】:
-
您的
app.use(passport...是否出现在路由之前和会话中间件之后? -
是的,只有在 passport.use 之后出现的中间件是 i18n + html/ejs 文件所在的 views 文件夹的定义。
-
尝试发布完整的代码,例如您如何配置local strategy,并在那里记录凭据?
-
已经在 S/O stackoverflow.com/questions/17074375/… 上回答你还没有设置 body-parser 中间件
-
我遇到了与 OP 类似的问题,正如@Offirmo 建议的 app.use(bodyParser.json());解决了我的问题
标签: node.js express passport.js