Node + React Basic [4]

YulHee Kim·2021년 1월 8일
0

node

목록 보기
4/4
post-thumbnail

💫 Node + React 기초 강의 💫

9. 로그인 기능 만들기

공식문서 참고

https://www.npmjs.com/package/jsonwebtoken

1. 데이터 베이스에서 요청한 E-mail찾기.

User.findOne()

2. 데이터 베이스에서 요청한 E-mail이 있다면 비밀번호가 같은지 확인

Bcrypt를 이용하여 plain password와 암호화된 (Hashed) 패스워드가 같은지 확인

3. 비밀번호까지 같다면 Token을 생성

토큰 생성을 위해서 JSONWEBTOKEN라이브러리를 다운로드
위 공식문서 참조

💻 코드


jsonwebtoken을 이용해서 token을 생성하기

//요청된 이메일이 데이터베이스에 있는지 확인
//요청된 이메일이 데이터베이스에 있다면 비밀번호가 맞는지 확인
//비밀번호까지 맞다면 Token 생성
//토큰을 저장한다. 어디에? 쿠키, 로컬스토리지.. 등등

10. Auth 기능 만들기

💡 왜 필요한가?

  1. 페이지 이동 때마다 로그인되어있는지 안되어있는지, 관리자 유저인지 등을 체크
  2. 글을 쓸때나 지울 때 권한이 있는지 체크

토큰을 만든뒤 유저 정보에 넣어주고
클라이언트는 토큰을 쿠키에, 서버는 디비에 토큰을 넣어놓고 둘이 맞는지 계속 확인

1.Cookie에서 저장된 Token을 Server에서 가져와 복호화

2. 복호화를 하면 User ID가 나오는데 그 User ID를 이용해서 데이터베이스 User Collection에서 유저를 찾은 후 쿠키에서 받아온 토큰이 유저도 갖고 있는지 확인

-> 쿠키가 일치 X -> authentication False!

3. auth 라우트 만들기

💻 코드


//인증 처리를 하는곳
//클라이언트 쿠키에서 토큰을 가져온다.
//토큰을 복호화한 후 유저를 찾는다.
//유저와 토큰 정보 request에 넣어줌
//next가 없으면 미들웨어에 갇힘
//유저가 있으면 인증 O
// 유저가 없으면 인증 X

//토큰을 디코드 한다.
//decoded된 게 user._id
//유저 아이디를 이용해서 유저를 찾은 다음에
//클라이언트에서 가져온 token과 DB에 보관된 토큰이 일치하는지 확인

role 0 -> 일반 유저
role 0이 아니면 -> 관리자
//여기까지 미들웨어를 통과해 왔다는 얘기는 Authentication이 True라는 말
// 클라이언트에 정보제공

11. 로그아웃 구현

1.로그아웃 Route 만들기

2.로그아웃 하려는 유저를 데이터베이스에서 찾아서

3. 그 유저의 토큰을 지워준다.

💻 코드

12. login, logout 포스트맨 결과확인


profile
백엔드 개발자

0개의 댓글