-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
로그인 send 오류
21.05.26 10:57 작성 조회수 153
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요. 로그인 라우터 작성 후 send가 되지 않아 질문 드립니다.ㅠㅠ
혹시 제가 코드를 잘못 작성한 거 아닐까 영상을 몇 번이나 봐도 코드 오류는 아닌데.. 런해도 오류도 안 뜨구요ㅠㅠ 도움 부탁 드립니다..
이게 index.js
app.post('/login', (req, res)=> {
//요청된 이메일을 데이터베이스에서 있는지 찾는다.
User.findOne({email:req.body.email}, (err, user)=>{
if(!user){
return res.json({
loginSucess : false,
message:"제공된 이메일에 해당하는 유저가 없습니다."
})
}
//요청한 이메일이 있다면 비밀번호가 같은지 확인한다.
//DB에 저장된 비밀번호와 로그인 시도 시 입력한 비밀번호를 비교한다.
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})
})
})
})
})
이게 user.js 입니다.
userSchema.methods.comparePassword = function(plainPassword, cb){
//plainPassword 1234567 | DB에 저장된 암호화된 비밀번호 ~ 가 같은지 체크해야 한다.
//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.toHexString(), 'secretToken')
//user._id + 'secretToken' = token
//-> secretToken을 넣으면 user id 값을 식별한다. 그래서 token은 식별을 위해 기억해둬야 해서 변수로 저장한다.
//'scretToken' -> user._id
user.token = token;
user.save(function(err, user){
if(err) return cb(err)
cb(null, user)
})
}
const User = mongoose.model('User', userSchema)
module.exports = {User}
패스워드 암호화까지는 정상적으로 됩니다!
답변을 작성해보세요.
0
John Ahn
지식공유자2021.05.27
하늘님 User.js 페이지에 보시면
userSchema.methods.comparePassword = function(plainPassword, cb){
//plainPassword 1234567 | DB에 저장된 암호화된 비밀번호 ~ 가 같은지 체크해야 한다.
//1234567을 암호화 한 후 비교하도록 한다. 복호화할 순 없기 때문에.
bcrypt.compare(plainPassword, this.password, function(err, isMatch){
if (err) return cb(err),
cb(null, isMatch)
})
}
여기 보이시죠 ~?!
여기서 return cb(err), 이렇게 되어있는걸 return cb(err); 이렇게 바꿔주세요 ! 수고하세요 ~!!
남하늘
질문자2021.05.27
아! ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 그거 때문이었군요ㅠㅠ....이런 걸로 실수하다니ㅠㅠㅠ
강사님 ㅠㅠ 고생시켜드려서 죄송해요ㅠㅠ ㅠㅠㅠㅠ 감사합니다ㅠㅠ!! 나머지 강의도 잘 듣겠습니다!ㅠㅠㅠㅠㅠㅠㅠㅠ
0
답변 2