작업 노트

사용자 계정 password 변경후 로그인 안되는 문제 본문

javascript/w3schools nodejs

사용자 계정 password 변경후 로그인 안되는 문제

달빛가면 2017. 2. 23. 11:10

문제의 코드부분입니다.


update시에 새로운 password가 있는 경우 form에서 받은 password를 user객체에 넣은 후 user.save()를 호출하고 있습니다. 암호는 hash로 변환 후에 저장되어야 하는데 user.save()함수(mongoose에 기본으로 제공) 실행 전에 hash를 생성하도록 user schema에 설정해 뒀기 때문이죠.

User.create시에도 user.save()가 호출되어서 hash를 생성합니다.

다만 위의 코드의 경우 newPassword가 있는 경우에 user.save()가 호출되고 req.body.user.password의 값이 다시 User.findByIdAndUpdate에서 사용되므로 다음번 로그인 시에 문제가 생깁니다.


단순하게 else를 빼버리고 무조건 delete req.body.user.password를 돌려줘도 되지만.. DB가 두번 update되니까 아래와 같이 바꾸어 보았습니다.


req.body.user.newPassword가 있는 경우에는 req.body.user.newPassword를 hash해서 넣어주고, 없는 경우는 req.body.user.password를 지웁니다.


user.hash()는 user schema에 아래와 같이 만든 함수입니다.
 

단순히 route에 bcrypt를 require하기 싫어서 schema함수로 빼냈습니다.


github주소는 https://github.com/imtaekh/my_app/tree/7e2869e27aa8e9fa6823bf651eb96353d3cbe05f 입니다.


'javascript > w3schools nodejs' 카테고리의 다른 글

게시판 페이징 추가  (0) 2017.02.23
게시판 웹 호환성 수정  (0) 2017.02.23
게시판 시작해봅시다 -10  (0) 2017.02.23
게시판 시작해봅시다 -9  (0) 2017.02.23
게시판 시작해봅시다 -8  (0) 2017.02.23
Comments