我是node.js的新手,我正在尝试使用passport-imap为一个简单的测试应用程序实现imap身份验证。
我按照https://github.com/nettantra/passport-imap中的说明配置了我的ImapStrategy和登录功能,但是当我登录到我的应用程序时,我收到消息“生成用户需要成功回退!”。这是我的代码:
passport.use(new ImapStrategy({host: 'my-imap-server', port : 993, tls : true}, function(req,res){
console.log('AUTH HERE ' );
return done(null, user);
}));
app.post('/login', passport.authenticate('imap', {
failureRedirect : '/login', // redirect back to the signup page if there is an error
failureFlash : true // allow flash messages
}),function(req, res) {
console.log('OK AUTHENTICATED');
res.redirect('/app');
});
添加“successRedirect”参数没有帮助......有人能指出我正确的方向吗?
我添加了验证回调,但无法理解它需要什么样的参数。 我尝试过类似于localstrategy的东西,但我的“用户名”参数不是我所期望的(用户登录),它是其他一些对象。此外,我不确定这是要走的路:我实际上不想保留本地用户列表,我只想接受任何可以对我的imap服务器进行身份验证的用户。
另外我不明白我是否应该像localstrategy一样使用“nextTick”:如果我这样做,我的验证就会被绕过,而且我总是会回到登录页面。
passport.use(new ImapStrategy({host: 'my-imap-server', port : 993, tls : true,
success_callback: function(username, password, done){
// process.nextTick(function () {
// Find the user by username. If there is no user with the given
// username, or the password is not correct, set the user to `false` to
// indicate failure and set a flash message. Otherwise, return the
// authenticated `user`.
findByUsername(username, function(err, user) {
if (err) { return done(err); }
if (!user) { return done(null, false, { message: 'Unknown user ' + username }); }
if (user.password != password) { return done(null, false, { message: 'Invalid password' }); }
return done(null, user);
})
//});
} }
));