내일배움캠프

230619 Node 로그인 만들기

Neda 2023. 6. 19. 20:55

230619 Node 로그인 만들기

로그인 기능은 대부분의 웹과 앱에서 필수적인 기능으로 사용되고 있다.
복잡한 로그인 기능을 passport.js를 사용하면 쉽게 구현할 수 있다.

 

순서

회원가입 순서

  1. request로 받은 username이 db에 이미 있는 유저인지 검사한다
    1. 이미 있을 경우 이미 사용자가 있음을 알려준다.
  2. username과 일치하는 사용자가 없을 경우 bcrypt를 사용해 비밀번호를 hash값으로 변환한다
  3. mongoose를 사용해 username과 password hash값을 저장한다
  4. 사용자에게 회원가입이 완료되었음을 알려준다

 

로그인 순서

  1. localStrategy를 미리 작성한다.
  2. request로 받은 username과 password를 사용해 passport 모듈의 authenticate를 호출하여 localStrategy를 실행한다.
  3. localStrategy에서는 username을 통해 db에서 일치하는 사용자 데이터를 찾는다
    1. 일치하는 유저 데이터가 없는 경우 사용자에게 일치하는 유저가 없음을 알린다.
  4. 일치하는 유저 데이터가 있다면 bcrypt.compare를 사용해 password 값을 비교한다
  5. password 값이 일치한다면 req.logIn()를 통해 로그인이 성공적으로 수행된다.

 

로그아웃 순서

  1. req.isAuthenticated() 통해 인증된 사용자인지 검사한다
    1. 인증되지 사용자인 경우 로그아웃을 할 필요가 없으므로 로그인이 되어 있지 않음을 사용자에게 알린다.
  2. 인증된 사용자인 경우 req.logout()을 호출한다.
  3. '/' 홈페이지로 리디렉션한다.

구현