이전의 코드대로 사용자 정보를 디비에 저장하면 비밀번호가 그대로 노출되어서 큰일난다. 그래서 해싱이라는 기술을 사용한다. 이는 문자열을 이해할 수 없는 문자열로 바꾸어주는 기능을 한다. 일단 해싱을 사용하기 위해 설치를 해야한다.
npm i bcrypt
그리고 bcrypt.hash(해싱 이전의 비번, 해싱횟수, 콜백함수) 를 사용한다. 우리는 사용자 정보가 create되기 전에 해싱을 하고 저장하고 싶기 때문에, 미들웨어를 사용한다. 스키마를 만들었던 파일로와서 해당 스키마가 모델링 되기전에 .pre 메서드를 사용해준다.
userSchema.pre("save", async function () {
console.log("사용자 비번:", this.password);
this.password = await bcrypt.hash(this.password, 5);
console.log("해시 비번:", this.password);
});
이는 'save' 되기전에 미들웨어로서 먼저 실행되고 저장을 진행한다. 나는 콜백함수 대신 promise를 사용하면 되니까 async await을 사용했다. 위처럼 코드를 작성하고 콘솔창을 보면 다음과 같다.
회원가입 할때 입력했던 비번은 123123인데 실제로 저장되는 비번은 엄청 복잡한 문자열이다. 이 상태로 디비에 저장하는 것이다.
대박적 ㅋㅋ
'Youtube Clone Coding' 카테고리의 다른 글
로그인 페이지 (0) | 2022.11.14 |
---|---|
Form validation (0) | 2022.11.14 |
User(사용자) 만들기 (0) | 2022.11.11 |
Search 페이지 (0) | 2022.11.11 |
영상 수정하기 (0) | 2022.11.09 |