如何从登录,进入使用passport.js页禁止被禁用的用户?
我使用MongoDB中软删除功能禁用用户,而不是永久删除。现在,只有启用的用户可以登录到该网站,而禁用的用户无法登录到该网站。
// Soft delete feature
exports.getDisabledUsers = function(req,res, next) {
User.find({active: false}, function(err, users) {
if (err) {
res.send(err);
}
res.json(users);
});
}
// Log In
exports.login = function (req, res, next) {
var userInfo = setUserInfo(req.user);
res.status(200).json({
token: 'JWT ' + generateToken(userInfo),
user: userInfo
});
};
// Passport.js
var localLogin = new LocalStrategy(localOptions, function (email, password, done) {
User.findOne({
email: email
}, function (err, user) {
if (err) {
return done(err);
}
if (!user) {
return done(null, false, {
error: 'Login failed. Please try again.'
});
}
userparePassword(password, function (err, isMatch) {
if (err) {
return done(err);
}
if (!isMatch) {
return done(null, false, {
error: 'Login failed. Please try again.'
});
}
return done(null, user);
});
});
});
禁用用户应该能够登录。现在,他们都能够登录。
回答如下:您还没有检查用户状态为激活。这可以通过在代码中添加条件,或修改查询蒙戈和添加在findOne一个条件来完成。
//码
如果(!user.active){
//返回用户未打开
}
// MONGO QUERY
User.findOne({电子邮件:电子邮件,活跃:真正},功能(ERR,用户){//你的代码}