Passport.js正面结果

时间:2016-02-23 18:48:13

标签: node.js passport.js sequelize.js

我正在尝试使用Sequelize和Passport在Node应用中验证用户身份。我能够访问我的数据库,但似乎无法获得积极的结果。基本上,我有一个简单的前端表单,接受用户名和密码(使用相应的名称"用户名"和"密码")然后是以下Passport定义:

passport.use(new localStrategy(
  {usernameField: 'email'},
    function(req, email, password, done) {
      models.TeacherX.findOne({ email: email }, function (err, user) {
       if (err) { return done(err); }
       if (!user) { return done(null, false); }
       if (!user.verifyPassword(password)) { return done(null, false); }
        return done(null, user);
       });
    }
));

然后我称之为:

router.post('/login', 
  passport.authenticate('local', { failureRedirect: '/login?msg=failure'}),
    function(req, res) {
      res.redirect("/?msg=positive");
});

1 个答案:

答案 0 :(得分:1)

由于您要将请求传递给验证回调,因此您需要将属性passReqToCallback设置为true或从验证回调中删除req参数。试试这个:

passport.use(new localStrategy(
  {passReqToCallback: true ,
   usernameField: 'email'},
  function(req, email, password, done) {
      models.TeacherX.findOne({ email: email }, function (err, user) {
       if (err) { return done(err); }
       if (!user) { return done(null, false); }
       if (!user.verifyPassword(password)) { return done(null, false); }
        return done(null, user);
      });
  }
));