Enjoy Programming

Express - (passport-local-mongoose) - Change Password 본문

JavaScript/Node.JS

Express - (passport-local-mongoose) - Change Password

LEETAEEON 2021. 5. 16. 02:46

이제 비밀번호 변경을 다룰건데 전에 사용했던 passport-local-mongoose를 이용한다

잠시 passport-local-mongoose를 다시 되짚어보면

passport-local-mongoose 는  username과 password를 사용한 login을  passport와 함께 간단히 빌드할 수 있는 플러그인 이다.

node.js 에 나온 다큐먼트를 인용해보자

그냥 passport-local-mongoose를 이용하면 암호 모듈을 사용하여 암호를 해시할 필요없이 이 모듈이 다 알아서 해준다고 한다.

 DB에서 salt및 hash필드를 자동으로 생성한다.

hash에 대한 개념은 살짝 잡혀있는데 salt가 무엇인가...

예를 들어 데이터베이스에 두명의 사용자가 동일한 암홀르 가진 경우 동일한 해시가 생성이 된다.

문제는 둘 중 하나가 해킹이 되면 같은 비밀번호이기 때문에 동일한 비밀번호를 사용하는 유저를 모두 해킹 할 수 잇다.

이를 방지하기 위한 방법이 salt인데. hash를 하기전에 독특한 문자열로 변경을 해주고 저장을 해주는 것이다. 

 

자 passport-local-mongoose사이트에서 changePassowrd를 치면 나오는 instance methods이다.

이를 이용해보자

 

우선  컨트롤러를 get과 post방식 두개로 만들어주고 라우터 설정도 해주자

그리고 post방식 컨트롤러를 세밀히 작성해주는데 여기서 passport-local-mongoose의 instance methods를 이용하겠다

우선 bodyparser로 수정 페이지에서 얻을 값들을 받아온다.

새로운 비밀번호가 확인 비밀번호와 일치하지 않으면 status 400을 보내주고 다시 수정페이지로 보낸다

400을 보내는 이유는 200으로 보내지면 계속 변경하라고 띄운다고 한다.

return으로 끊어주고

 

만약 두개가 일치하면 local-mongoose 의 인스턴스 함수로 현재 함수와 바뀔 함수를 바꿔준다. 그리고 프로필페이지로 이동

그리고 현재 패스워드가 제대로 입력되지 않으면 역시 status400을 띄우고 수정페이지로 이동시킨다.

 

뭔가 alert을 주면 좋겠는데 일단 alert은 Nodejs에서는 안먹힌다. 따로 모듈이 있는거 같은데 아직 모르겠다

그리고 res.send를 이용해서 스크립트 자체를 만들어 보내주면 그것도 안된다..

redirect와 res.send는 동시에 이루어질 수 없다고 한다.

고민해보자.. 보니까 컨트롤러를 하나더 만들어서 alert을 띄우는 것 같다.