티스토리 뷰
2024.12.11 - [웹 개발 공부하기] - [12.11] 설계한 API를 구현해보자(회원가입,로그인)😀
회원가입과 로그인은 잘 되었으니, 이번엔 비밀번호 초기화 요청을 해보고 초기화까지 해보도록 하겠다.
💥 비밀번호 초기화 요청
사실상 비밀번호 초기화 요청은 API 설계할 때도 그랬지만 어려울 것은 없었다.
입력받은 email이 가입된 email 이 맞는 지 확인하는 정도이다.
그래서 sql 은 SELECT 문을 사용하였다.
const user = results[0];
if(user){
return res.status(StatusCodes.OK).json({
email : email
});
} else {
return res.status(StatusCodes.UNAUTHORIZㄴED).end();
}
이렇게 입력된 email이 가입된 유저가 맞는 지 확인하는 로직이다.
가입된 유저가 맞다면 email을 respond 해주게끔 로직을 짰다.
당연히 잘 되고있다.
email도 문제없이 respond 되고있다. 그럼 이제 본격적으로 비밀번호를 초기화 해보겠다.
💥 비밀번호 초기화
우선, 회원가입 할 때부터 DB엔 암호화된 비밀번호가 저장되어 있다.
그럼 유저가 비밀번호를 초기화해도 암호화가 될까?
초기화인 만큼 데이터를 수정한다라는 sql을 사용하기 위해 UPDATE 문을 사용하였다.
앞에서 본 3가지의 API와는 다른 부분이 하나 있다.
let sql = 'UPDATE users SET password=?, salt=? WHERE email=?';
UPDATE는 입력받은 새 비밀번호와 인증용 email만 받는 것이 아니라, salt값 까지도 받아야 한다.
const salt = crypto.randomBytes(10).toString('base64');
const hashPassword = crypto.pbkdf2Sync(password, salt, 10000, 10, 'sha512').toString('base64');
let values = [hashPassword, salt, email];
그리고나서 이렇게 암호화된 비밀번호와 salt값을 같이 DB에 저장하는 것이다.
POSTMAN으로도 잘 되는 지 확인해보겠다.
회원가입 당시 5555 로 가입한 lim 유저를 6666 으로 비밀번호 초기화를 해보았다.
affectedRows : 1 잘 떴고,
로그인할 때와 다른 비밀번호가 새로 저장된 걸 확인할 수 있다.
오늘은 회원가입, 로그인 ,비밀번호 초기화 요청, 비밀번호 초기화까지 해보았다.
하루만에 4개의 API 를 구현하려하니 체력적으로 굉장히 힘들었던 것 같다..
아직도 로직이 익숙치 않아서 버벅이면서 강의를 듣다보니 시간도 오래걸린 것 같다 ㅠㅠ
아직은 유효성검사or리팩토링을 하지 않은 상태여서 코드가 조금 더러운 것 같다.
내일 강의를 미리 듣기 전에, 오늘 시간이 남는다면 먼저 리팩토링을 해보는 것도 좋을 것 같다는 생각이 든다🤔
당연히 내가 리팩토링을 해도 석연치 않은 코드가 나오겠지만.. 혼자서 뭐라도 해보는 게 좋을 것 같다.
오늘 강의 되게 재밌었다. 새로운 모듈인 crypto도 배웠고 입력받은 데이터가 암호화된 부분도 굉장히 흥미로웠다.
실제로도 쓰일 지는 잘 모르겠지만 하나하나 지식이 쌓인다는 것만으로도 감지덕지..😋
시간 남는대로 리팩토링도 하고 강의도 한 번 더 돌려보자 👏👏
'웹 개발 공부하기' 카테고리의 다른 글
[12.13] 도서 목록 조회 페이징구현과 신간 뽑아보기🧐 (2) | 2024.12.15 |
---|---|
[12.12] 회원가입을 했으니 도서API도 구현해보자🤩 (2) | 2024.12.12 |
[12.11] 설계한 API를 구현해보자(회원가입,로그인)😀 (0) | 2024.12.11 |
[12.10] app.js 구현 및 프로젝트 준비 + 오늘의 포스팅 (0) | 2024.12.10 |
[12.10] express-generator 구조 (0) | 2024.12.10 |