조인 > 로그인을 진행하면서 했던 것들
기본적으로 조인에 필요한 정보가 무엇인지 고려해야함
계정명을 이메일로 하고 비밀번호 확인하고 닉네임까지
이메일과 닉네임은 중복되지 않아야 하고
비밀번호와 닉네임은 submit 되기 전에 이벤트로 구현을 해야하지만 현재는 백엔드에서 확인하고 있음
유저 보안을 위해 비밀번호를 해싱화했고 bcrypt라는 라이브러리 사용
또한 계정이 생성되기전에 해싱되야 하므로 mongoose의 미들웨어를 사용했음
그 미들웨어에 save 훅을 사용했으며 document 미들웨어라서 this를 통해 userSchema의 비밀번호를 대상으로 삼을 수 있음
이전에 공부했듯 비밀번호가 업데이트 될때 해싱으로 인한 문제가 발생할 수 있다는걸 기억해야 함
로그인을 할때 compare를 사용하지 않고 입력받은 비밀번호를 똑같이 해싱해서 비밀번호 확인을 해봤는데 다른 값이 나오는걸 알게 됐음
같은 횟수만큼 소금을 치면 동일한 값이 나오는줄 알았는데 아니었음
실수했던 부분도 혹시 모르니 저장해뒀음
mongoose query에서 exists와 findOne의 차이를 이해해야함
findOne은 조건에 맞는걸 찾고 해당 문서를 주고 exists는 말그대로 존재하는지만 알려줌
위 캡쳐처럼 exists > findById를 한넌에 하는것이 findOne
그리고 우린 로그인을 하고 있으니 유저의 정보를 모두 알아야 하므로 findOne을 사용해야함
compare에서도 await이 들어가야함
해싱화된 비밀번호와 대조하는 시간이 필요한데 await을 사용하지 않으니 로그로 pending이 나옴
아직 세션을 구현하지 않은 상태로 조인과 로그인이 대충 완성은 됨
https://github.com/Daniel-Jeon/project1/commit/ef6ac76728b3e5d1191bad37647115e1be8dcb83
'개발 > Project' 카테고리의 다른 글
소셜 로그인은 역시 짜증 (0) | 2024.12.01 |
---|---|
세션 복습 (0) | 2024.11.30 |
Deployment (0) | 2024.11.27 |
콘티 (0) | 2024.11.11 |
프로젝트 시작전 정리 (0) | 2024.11.09 |