230619 Node 로그인 만들기
로그인 기능은 대부분의 웹과 앱에서 필수적인 기능으로 사용되고 있다.
복잡한 로그인 기능을 passport.js를 사용하면 쉽게 구현할 수 있다.
순서
회원가입 순서
- request로 받은 username이 db에 이미 있는 유저인지 검사한다
- 이미 있을 경우 이미 사용자가 있음을 알려준다.
- username과 일치하는 사용자가 없을 경우 bcrypt를 사용해 비밀번호를 hash값으로 변환한다
- mongoose를 사용해 username과 password hash값을 저장한다
- 사용자에게 회원가입이 완료되었음을 알려준다
로그인 순서
- localStrategy를 미리 작성한다.
- request로 받은 username과 password를 사용해 passport 모듈의 authenticate를 호출하여 localStrategy를 실행한다.
- localStrategy에서는 username을 통해 db에서 일치하는 사용자 데이터를 찾는다
- 일치하는 유저 데이터가 없는 경우 사용자에게 일치하는 유저가 없음을 알린다.
- 일치하는 유저 데이터가 있다면 bcrypt.compare를 사용해 password 값을 비교한다
- password 값이 일치한다면 req.logIn()를 통해 로그인이 성공적으로 수행된다.
로그아웃 순서
- req.isAuthenticated() 통해 인증된 사용자인지 검사한다
- 인증되지 사용자인 경우 로그아웃을 할 필요가 없으므로 로그인이 되어 있지 않음을 사용자에게 알린다.
- 인증된 사용자인 경우 req.logout()을 호출한다.
- '/' 홈페이지로 리디렉션한다.
구현
'내일배움캠프' 카테고리의 다른 글
230621 react로 input Select 만들기 (0) | 2023.06.21 |
---|---|
230620 투두리스트에 react-router-dom 적용하기 (0) | 2023.06.20 |
230618 내일배움캠프 5주차 WIL (1) | 2023.06.18 |
230616 React Masonry 레이아웃 만들기 (0) | 2023.06.16 |
230615 express res.format()으로 Accept HTTP Header에 따라 다른 콘텐츠 응답하기 (0) | 2023.06.15 |