반응형
🤍Auth 기능의 필요성
- 홈페이지에는 로그인이 필요한 기능이 있고 필요하지 않은 기능이 있다.
- 페이지 이동 혹은 게시판 글을 쓰거나 지울 때 로그인이 되어 있는지, 관리자인지 or 유저인지 등을 체크하기 위해 필요하다.
- 지난번 로그인 시 생성한 토큰을 서버에서는 DB에, 클라이언트는 Cookie에 토큰을 넣어두었다.
- 먼저 클라이언트에서 쿠키에 담겨있는 토큰을 서버에 전달한다.
- ㄴ 이 토큰은 인코드 되어있으므로 디코드시킨 다음 USER ID로 보낸다.
- 해당 USER ID 토큰이 DB에 있을 경우 인증 완료.
- 없을 경우 글쓰기 권한을 부여하지 않음.
1. Auth 라우트 만들기
2. 미들웨어 auth.js 만들기
- 인증처리를 하는 곳
- 클라이언트 쿠키에서 토큰을 가져온다.
- 토큰을 복호화한 다음 유저를 찾는다.
- 다른 곳에서도 사용하기 편하도록 token, user를 req에 담는다!!!
req.token = token; //token,user를 req에 넣어줌.
req.user = user;
3. 토큰을 디코드한다.
- 유저 아이디를 이용해서 유저를 찾은 다음 클라이언트에서 가져온 token과 DB에 보관된 토큰이 일치하는지 확인.
- 토큰 디코드 코드는 이곳에서 참고한다.
🤍로그아웃 만들기
- 로그아웃하려는 유저를 DB에서 찾아서
- 그 유저의 토큰을 지워주면 된다.
그 이유는? 위에서 만든 auth 인증 시 토큰을 통해 확인하고 만약 토큰이 없을 경우 인증이 되지 않도록 구현했기 때문에 토큰만 지워주면 로그인 기능이 풀려버리게 된다.
반응형
'💻 my code archive > 💜React.js' 카테고리의 다른 글
노드&리액트 공부기록(11) - CORS 이슈, Proxy로 해결하기 (0) | 2022.03.01 |
---|---|
노드&리액트 공부기록(10) - bolier-plate 기반의 구조로 변환하기 (0) | 2022.03.01 |
노드&리액트 공부기록(9) - 리액트란?, Real Dom , Virtual Dom, React 설치, npx, npm 차이점 (0) | 2022.03.01 |
노드&리액트 공부기록(7) - bscrypt 사용, 비밀번호 암호화하여 DB 저장하기, 로그인 만들기 (0) | 2022.02.28 |
노드&리액트 공부기록(6) - nodemon 설치하기 (0) | 2022.02.27 |