inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 노드, 리액트 시리즈 - 기본 강의

로그인 send 오류

253

남하늘

작성한 질문수 2

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

안녕하세요. 로그인 라우터 작성 후 send가 되지 않아 질문 드립니다.ㅠㅠ

혹시 제가 코드를 잘못 작성한 거 아닐까 영상을 몇 번이나 봐도 코드 오류는 아닌데.. 런해도 오류도 안 뜨구요ㅠㅠ 도움 부탁 드립니다..

이게 index.js


app.post('/login', (reqres)=> {
      //요청된 이메일을 데이터베이스에서 있는지 찾는다.
      User.findOne({email:req.body.email}, (erruser)=>{
        if(!user){
          return res.json({
            loginSucess : false,
            message:"제공된 이메일에 해당하는 유저가 없습니다."
          })
        }    

        //요청한 이메일이 있다면 비밀번호가 같은지 확인한다.
        //DB에 저장된 비밀번호와 로그인 시도 시 입력한 비밀번호를 비교한다.
        user.comparePassword(req.body.password, (errisMatch)=>{
          if(!isMatch)
          return res.json({loginSuccess : falsemessage : "비밀번호가 틀렸습니다."})
          
          //비밀번호까지 동일하다면 토큰을 생성한다.
          user.generateToken((erruser)=>{
            if(errreturn res.status(400).send(err);

            //토큰을 저장한다. 쿠키, 로컬스토리지 등 여러군데 저장이 가능하다. 
            //여기서는 쿠키에 저장하기로 한다.
            res.cookie("x_auth",user.token)
            .status(200
            .json({loginSuccess:trueuserId : user._id})

          })
        })
      })
})

이게 user.js 입니다.

userSchema.methods.comparePassword = function(plainPasswordcb){

    //plainPassword 1234567 | DB에 저장된 암호화된 비밀번호 ~ 가 같은지 체크해야 한다.
    //1234567을 암호화 한 후 비교하도록 한다. 복호화할 순 없기 때문에.

    bcrypt.compare(plainPasswordthis.passwordfunction(errisMatch){
        if (errreturn cb(err),
           cb(nullisMatch)
    })
}


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(erruser){
        if(errreturn cb(err)
        cb(nulluser
    })
}

const User = mongoose.model('User'userSchema)

module.exports = {User}

패스워드 암호화까지는 정상적으로 됩니다!

react nodejs

답변 2

0

John Ahn

하늘님    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);    이렇게 바꿔주세요 ! 수고하세요 ~!! 



0

남하늘

아! ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 그거 때문이었군요ㅠㅠ....이런 걸로 실수하다니ㅠㅠㅠ

강사님 ㅠㅠ 고생시켜드려서 죄송해요ㅠㅠ ㅠㅠㅠㅠ 감사합니다ㅠㅠ!! 나머지 강의도 잘 듣겠습니다!ㅠㅠㅠㅠㅠㅠㅠㅠ

0

John Ahn

안녕하세요 하늘님 깃헙주소 올려주시겠어요?! 

0

남하늘

안녕하세요! 

https://github.com/N2NO 입니다... ㅠ-ㅠ) ㅠㅠㅠ

깃 이메일이랑 비번이 필요하다고 하네요

0

36

1

404 에러

0

103

1

34강 인증 체크에서 element 사용 때문에 에러나시는 분들 이렇게 하심 됩니다.

0

121

1

로그인, 로그아웃, 토근 작동 안 함

0

240

0

9강 오류 어떻게 해결하나요?

0

195

1

localhost 에서 연결을 거부했습니다.

0

1931

4

포스트맨에서 true가 안떠요

0

151

1

왜 안되나요

0

130

1

몽고db 연결 오류가 납니다 위에껀 입력한 코드, 아래껀 터미널이에요

0

243

1

로그아웃 401 에러(Unauthorized)

0

506

2

암호가 해싱되지 않고 입력값 그대로 db에 저장되는 문제

0

151

1

7강중에서

0

167

2

User.findByToken is not a function

0

212

1

루트 디렉토리

0

272

1

useState

0

562

1

프록시 잘 설정했는데도 404 오류 뜨는 분들

5

876

6

webpack 관련 에러 질문

0

220

1

리액트 관련 질문

0

273

1

14강 로그아웃 안됨

0

319

1

mongoDB 데이터 확인하는 법

0

411

1

postman 에러

0

293

1

선생님 리덕스를 사용하면 어떠한 부분이 좋은지 알 수 있을까요?

0

235

1

다음과 같은 에러들이 발생합니다.

0

274

1

14강 로그아웃 기능 구현시 postman에서 Cannot POST 오류가 뜹니다.

0

380

1