NodeJS (ExpressJS 사용) 및 MongoDB에서 간단한 로그인 메커니즘을 구현하려고합니다. DB 연결을 위해 MongoJS를 사용하고 있습니다. $and:
필드가 컬렉션 내부에서 일치하는지 확인 하기 위해를 사용 하고 있습니다.
function authenticate(req,res){
username = req.body.username;
password = req.body.password;
db.users.find({$and :[{username:username},{password:password}]},function(err,doc){
if(( Object.keys(doc).length === 0 && doc.constructor === Object) === false){
res.send("Invalid login")
} else {
doc.forEach(function(doc){
console.log(doc.firstname)
})
}
})
}
문서가 빈 개체 (사용자 이름과 암호가 일치하지 않음을 의미)가 포함되어 있는지 확인하고 페이지에 로그인이 유효하지 않음을 표시하도록 지시합니다. 문서에 일치하는 사용자 이름과 암호가 포함되어 있으면 사용자 console.log()
의 이름을 표시합니다.
위의 코드가 작동하지 않습니다 ... 내가 잘못하고있는 것은 무엇입니까?
미리 감사드립니다 ...
나는 당신이하는 일을하는 대신 한 결과의 제한으로 사용자 이름에 대한 쿼리를 실행하고 반환 된 문서에 결과가 포함되어 있는지 확인하는 것이 훨씬 더 합리적이라고 생각합니다. 거기에서 게시 된 암호가 데이터베이스에서 쿼리 한 암호와 일치하는지 확인하고 일치하는 경우 사용자 이름을 console.log합니다. 또한 암호를 쿼리하는 대신 먼저 해싱해야합니다. 여기 에 대해 자세히 알아보십시오.
function authenticate(req,res){
username = req.body.username;
password = req.body.password;
db.users.findOne({"username":username}, function(err, doc) {
if (err) throw err;
if(doc && doc._id){
if(password==doc["password"]){
console.log("Your first name is: "+doc.firstname)
}else{
res.send("Invalid login")
}
}else{
res.send("Invalid login")
}
});
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다