작성
·
231
0
https://github.com/myeongwon2/first
깃헙입니다
app.post('/login', (req, res) =>{
//요청된 이메일을 데이터베이스에서 있는지 찾는다.
User.findOne({ email: req.body.email }, (err, user) => {
if(!user){
return res.json({
loginSuccess: false,
message: "제공된 이메일에 해당하는 유저가 없습니다."
})
}
//요청된 이메일이 데이터베이스에 있다면 비밀번호가 맞는 비밀번호 인지 확인
user.comparePassword(req.body.password, (err, isMatch) =>{
if(!isMatch)
return res.json({ loginSuccess: false, message: "비밀번호가 틀렸습니다."})
//비밀번호 까지 맞다면 토근을 생성하기.
user.generateToken((err, user)=>{
if(err) return res.status(400).send(err)
//토큰을 저장한다. 어디에? 쿠키, 로컬스토리지
res.cookie("x_auth", user.token)
.status(200)
.json({ loginSuccess: true, userId:user._id})
})
})
})
})
userSchema.methods.comparePassword = function(plainPassword, cb){
//plainPassword 1234567 암호화된 비밀번호 ~
bcrypt.compare(plainPassword, this.password, function(err, isMatch){
if(err) return cb(err),
cb(null, isMatch)
})
}
userSchema.methods.generateToken = function(cb){
var user = this;
//jsonwebtoken을 이용해서 토큰을 생성
var token = jwt.sign(user._id, 'secretToken')
//user._id + 'secretToken' = token
//->
//'secretToken' -> user._id
user.token = token
user.save(function(err, user){
if(err) return cb(err)
cb(null, user)
})
}
위가 index.js인데 이메일부터 false가 나오는데 뭐가 틀린건가여 아래는 User.js입니다
답변 2
0
저도 비슷한 에러였는데 index.js 에 아래처럼 선언이 안되어있어서 나는 문제였더라구요.. 혹시라도 도움이 될까 싶어 남겨봅니다.
app.use(bodyParser.json());
0
안녕하세요 !
comparePassword 메소드에
마지막 , ==> ; 이걸로 바꿔주세요 ~
그리고 getnerateToken 메소드에서도
이렇게 바꿔주세요 !
수고하세요 !
둘다 바꿨는데 오류뜨는데 this값이 없는거 같은데 이걸 어떻게 해야하는지 모르겠네요 ㅠㅠ