gpt4 book ai didi

node.js - 使用 Passport.js LocalStrategy 进行另一项字段验证

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:08 33 4
gpt4 key购买 nike

我正在使用passport.js LocalStrategy 来验证用户名和密码。但现在我又多了一个字段来验证其是否处于事件状态:true/false(无论用户是否处于事件状态)。下面的代码显示了用户名和密码的验证。

app.js

passport.use(new LocalStrategy({
usernameField: 'username',
passwordField: 'password'},
function(username, password, done) {
User.findOne({ name : username}, function(err, user) {
if (!user){
return done(null, false,{message: 'Incorrect username' });
}

if(user){
var validPassword = user.comparePassword(password);

if(!validPassword){
return done(null, false,{message: 'Incorrect password' });
}
}
return done(null, user);
});
}
));

router.post('/pages/auth/login', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (user === false) {
return res.json({
success:false,
message: info.message,
});
} else {
req.login(user, function(err) {
return res.json({
success:true,
Id:req.sessionID,
userName:req.body.username,
Email:req.user.email,
uid:req.user._id,
mobile:req.user.mobile,
});
});
}
})(req, res, next);
});

我的集合在 mongoDB 中如下所示

{
"_id": ObjectId("57921ce8f8a10f644ababf2d"),
"name": "abc",
"email": "abc@gmail.com",
"password": "32432423#fds#yy&1233S&dr&@",
"mobile": "9886787560",
"generatedOtp": "270371",
"active": false,
"__v": NumberInt(0)
}

现在它将检查用户名和密码是否正确然后登录,否则它将显示该消息。像这样我也想检查 active 字段。请帮助我。

最佳答案

下面的代码应该可以满足您的需求。
请注意,我还在检查密码之前删除了检查 if (user) { ... ,因为这是不必要的。如果 usernull/undefined 那么由于您第一次检查 if (!user),您的代码将不会达到该点{ ... 在这种情况下从函数返回。

passport.use(new LocalStrategy({
usernameField: 'username',
passwordField: 'password'},
function(username, password, done) {
User.findOne({ name : username}, function(err, user) {
if (!user){
return done(null, false,{message: 'Incorrect username' });
}

if (!user.active) {
return done(null, false, {message: 'User is inactive'});
}

var validPassword = user.comparePassword(password);
if(!validPassword){
return done(null, false,{message: 'Incorrect password' });
}

return done(null, user);
});
}
));

关于node.js - 使用 Passport.js LocalStrategy 进行另一项字段验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38527901/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com