5 인증 프론트엔드 통합

프론트엔드에서의 인증

  • 로그인

    • 로그인 후 백엔드 서비스로부터 받은 토큰을 로컬 스코리지에 저장해 놓고 요청을 보낼 때마다 헤더에 Bearer 토큰으로 지정

  • 회원가입

  • 리디렉션

    • 백엔드에 HTTP 요청을 보냈을 때 403이 리턴되면 로그인 페이지로 리디렉트

5.1 라우팅

5.1.1 react-router-dom

  • react-router-dom

npm install react-router-dom

5.1.2 react-router-dom 라이브러리가 필요한 이유

서버 사이드 라우팅 vs 클라이언트 사이드 라우팅

5.1.3 로그인 컴포넌트

  • 로그인 컴포넌트

  • AppRouter 컴포넌트

  • index.js 수정

5.1.4 접근 거부 시 로그인 페이지로 라우팅하기

ApiService

5.2 로그인 페이지

5.2.1 로그인을 위한 API 서비스 메서드 작성

ApiService

  • signin 함수

Login.js

5.2.2 로그인에 성공

ApiService

  • signin 함수

5.3 로컬 스토리지를 이용한 액세스 토큰 관리

5.3.1 로컬 스토리지

  • 웹 스토리지

    • 사용자의 브라우저에 데이터를 kwy-value 형태로 저장 가능 (쿠키와 비슷)

    • 종류

      • 세션 스토리지

        • 브라우저를 닫으면 사라짐

      • 로컬 스토리지

        • 브라우저를 닫아도 사라지지 않음

    • 개발자 도구 → Application → Storage → Local Storage, Session Storage, IndexedDB, Web SQL, Cookies

5.3.2 액세스 토큰 저장

로그인 시 받은 토큰을 로컬 스토리지에 저장

  • ApiService

    • signin function

모든 API의 헤더에 액세스 토큰을 추가

로그인에 관련되지 않은 모든 API 콜은 call 메서드를 통해 이루어지므로, 반복을 피하기 위해서는 call에 토큰이 존재하는 경우 헤더에 추가하는 로직 작성

  • ApiService

    • Header

5.4 로그아웃과 글리치 해결

5.4.1 로그아웃 서비스

  • ApiService

    • signout

5.4.2 내비게이션 바와 로그아웃

  • Add NavigationBar at App component

5.4.3 UI 글리치 해결

  • App.js

    • loading . .

5.5 계정 생성 페이지

5.5.1 계정 생성로직

  • ApiService

    • signup function

  • SignUp.js

  • AppRouter

    • SignUp

  • Login.js

Last updated