当前位置: 首页 > 面试题库 >

Passport js本地策略自定义回调将用户显示为false,信息显示为“缺少凭据”

曾高杰
2023-03-14
问题内容

我正在使用Node.js,angularjs,express和passport。我尝试了所有我能想到的选项,但仍然没有解决方案。在其他帖子中找不到该问题的解决方案。

app.post('/login', function(req, res, next) {

console.log(req.body.Email);
console.log(req.body.Password);

passport.authenticate('local', function(err, user, info) {

    console.log(err,user,info);
...

在上面的req.body中,控制台中显示正确,但在护照身份验证中,null,false和info显示为缺少凭据。

我已经将以下内容用于通行证端口

passport.use(new LocalStrategy({ usernameField: 'Email' }, (Email, Password, done) => {
console.log(Email, Password, done);
User.findOne({ Email: Email.toLowerCase() }, (err, user) => {
    console.log(err);
    if (err) { return done(err); }
    if (!user) {
        return done(null, false, { msg: `Email ${Email} not found.` });
    }
    user.ComparePassword(Password, (err, isMatch) => {
        if (err) { return done(err); }
        if (isMatch) {
            return done(null, user);
        }
        return done(null, false, { msg: 'Invalid email or password.' });
    });
});
}));


passport.serializeUser((user, done) => {
   // console.log(user, done);
    done(null, user.id);
});

passport.deserializeUser((id, done) => {
    User.findById(id, (err, user) => {
        done(err, user);
    });
});

我不明白为什么存在这个问题。

有人知道我在这里想念的吗?!?!

谢谢!


问题答案:

添加至kaxi答案我已通过在护照本地策略中添加密码字段来解决此错误,如下所示

 passport.use(new LocalStrategy({ usernameField: 'Email',passwordField: 'Password'  }, (Email, Password, done)

代替

passport.use(new LocalStrategy({ usernameField: 'Email' }, (Email, Password, done)



 类似资料:
  • 图 7.1:本节实现的用户资料页面构思图 本节要实现的用户资料页面是完整页面的一小部分,只显示用户的名字和头像,构思图如图 7.1 所示。[1] 最终完成的用户资料页面会显示用户的头像、基本信息和微博列表,构思图如图 7.2 所示。[2](在图 7.2 中,我们第一次用到了“lorem ipsum”占位文字,这些文字背后的故事很有意思,有空的话你可以了解一下。)这个资料页面会和整个演示应用一起在第

  • 我是Hadoop和Java的新手,我觉得我明显缺少了一些东西。如果这意味着什么的话,我正在使用Hadoop 1.0.3。 我使用hadoop的目标是获取一堆文件并一次解析一个文件(而不是逐行)。每个文件将生成多个键值,但其他行的上下文很重要。键和值是多值/复合的,因此我为键实现了可写比较,为值实现了可写。由于每个文件的处理需要一点 CPU,因此我想保存映射器的输出,然后稍后运行多个化简器。 对于复

  • 使用gdb时,如果想查看gdb版本信息,可以使用“show version”命令: (gdb) show version GNU gdb (GDB) 7.7.1 Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/g

  • 我有自定义的消息onbeforeunload事件和工作良好,但我注意到今天它不再显示我的消息。相反,它显示“可能不会保存您所做的更改” 谁能告诉我如何修理它吗?

  • 问题内容: 在创建我自己的SimpleAdapter对象之前,因为我想更改行的颜色,所以我只是使用new SimpleAdapter(…)。现在,我正在使用自己的自定义SimpleAdapter,行颜色正在更改,但是我的文本没有得到更新。我已经调用了adapter.notifyDataSetChanged(),但它仍只显示示例文本“ TextView”。正如我所说,当我没有创建自己的适配器时,一切

  • 问题内容: 我已经为此工作了好几个小时,试图弄清楚为什么没有出现所谓的简单自动完成功能。 事实证明,在我的代码中,input元素被设置为,而pac-container上的样式为。 我可以在DevTools中更改这些值,并且效果很好,但是我不知道如何或为什么将这些值设置为这些值。 我的自动完成功能是在这样的Angular Directive中设置的,其中loadGmaps获取google api。