我正在尝试使用Sequelize和Passport在Node应用程序中验证用户。我可以访问我的数据库,但似乎无法获得肯定的结果。基本上,我有一个简单的前端表单,它接受用户名和密码(使用各自的名称" username“和" password "),然后接受以下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");
});发布于 2016-02-24 05:31:06
由于您将请求传递给verify回调,因此需要将属性passReqToCallback设置为true或从verify回调中删除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);
});
}
));https://stackoverflow.com/questions/35585702
复制相似问题