매거진 유저 인증

Passport Local 인증(2)

by 이종복

이번 글에서는 Passport의 Local authentication을 마무리해보도록 하겠습니다.


우선, 이전 글(https://brunch.co.kr/@topherlee/92)에서 작성했던

passport.js를 완성하는데서부터 시작해보겠습니다.



1) passport.js에 이제 추가해줄 것은 2가지입니다.

바로 Serialization과 Deserialization입니다.


Serialization이란 '어떤 정보를 쿠키에게 주느냐'를 의미합니다.

다른 말로, '지금 웹 브라우저에 있는 사용자에 대해서 어떤 정보를 가질 수 있느냐'를 의미합니다.

쿠키에 있는 정보는 자동으로 백엔드 쪽으로 전송이 되고,

백엔드는 사용자(ex)사용자ID:1)를 인식하게 됩니다.


Serialization은 어떤 field가 쿠키에 포함될 것인지 알려줍니다.

단, 이 때 쿠키는 아주 작아야 하고 민감한 정보는 절대 담으면 안됩니다.

왜냐하면 누군가가 그 정보에 접근할 위험이 있기 때문입니다.

hello308.png


예를 들어, 다음의 serializeUser 함수는 쿠키에 user.id만 담으라고 하고 있습니다.

즉, 오로지 id만 전송하게 되는 것입니다.

그리고 사용자가 그 브라우저에서 쿠키를 열어본다면 쿠키에는 숫자 하나, 즉 id만 보이게 됩니다.

hello309.png


2) deserialize는 그 쿠키의 정보를 어떻게 사용자로 전환하는가를 의미합니다.

이 때, serializeUser(), deserializeUser()와 같은 함수를 쓸 수 있는 이유는

passport-local-mongoose를 사용하기 때문입니다.

여기까지 설정하면 passport가 사용자 인증을 처리할 수 있도록 설정이 됩니다.

hello310.png
hello439.png


3) 다음은 실제로 사용자를 가입시키는 것과 가입한 사용자를 로그인시키는 것을 구현해보겠습니다.

순서는 다음과 같습니다.

(1) 우선 User 모델을 불러온 다음

(2) const user = User.create()로 계정을 생성해주고, 계정의 인자로서 user와 password를 추가합니다.

(3) User.register(user, password)를 통해서 생성된 유저를 등록시켜줍니다.

hello313.png
hello440.png



4) 다음은 localhost:4000/join 으로 이동해서 회원가입을 합니다.

hello314.png


5) 회원가입이 완료되면 localhost:4000/home으로 이동합니다.

hello316.png


6) 또한, mongodb에서 use "데이터베이스 이름" - db.users.find({})를 통해서

신규 유저가 잘 생성된 것을 확인할 수 있습니다.

hello315.png


"다음은 노마드코더(https://academy.nomadcoders.co/)의 [초급 풀스택] 유튜브 클론 코딩 강의를 참고하였습니다."

keyword
매거진의 이전글Passport Local 인증(1)