티스토리 뷰

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도 배웠고 입력받은 데이터가 암호화된 부분도 굉장히 흥미로웠다.
실제로도 쓰일 지는 잘 모르겠지만 하나하나 지식이 쌓인다는 것만으로도 감지덕지..😋
시간 남는대로 리팩토링도 하고 강의도 한 번 더 돌려보자 👏👏

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함