.env
가장 우선순위가 낮은 환경변수 설정 파일
.env.development
개발 환경에서만 작동되는 환경변수 설정파일
.env.production
배포 환경에서만 작동되는 환경변수 설정파일
.env.test
테스트 환경에서만 작동되는 환경변수 설정 파일
.env.sample
배포시 환경변수의 key값이 어떤 것을 의미하는지 정의한 문서
설명해주는 용도
ex) REACT_APP_BACK_URL :계좌 관련 api백엔드 url
각각 파일에는 local파일이 존재하며(ex .env.local , .env.development.local)
local 파일은 기존에 있던 파일보다 우선순위가 높습니다.
보통 env만 있기는 함.
우선순위는 env가 가장 낮음
세션인증 로그인 방식일 수도 있고, 토큰일 수도 있고,
선택
인증 토큰, 유저의 정보가 암호화된 토큰이며 해당토큰이 있어야 해당 사용자는 인증된 사용자
보통 해당 인증 토큰이 없다면 401번을 return
response status code 401 (unauthorized)
토큰이 있지만 허가되지 않은 사용자는 response status code 403(forbidden)
따라서 해당 토큰이 만료되면 401,403을 return
프론트 엔드 개발자가 401,403을 비동기 통신의 응답 결과로 반환 받으면 어떻게 해야할까요?
1) refresh token 있을 경우
회사 정책에 따라 리프레쉬 토큰 필요 없을 수도 있음.
axios interceptor 해당 에러 발생하면 refresh token 으로 access token을 재발급 받고 실패한 요청을 다시 재요청
2) refresh token x없을경우
refresh token이 없다면 프론트엔드에서는 로그아웃 로직을 실행
1) 웹스토리지
- 브라우저를 통해 데이터를 저장
DB에 저장되는 데이터와 달리 삭제되어도 상관없는 소량의 데이터를 저장할때 사용
- 사용자에게 데이터 저장을 부담.=> 사용자의 하드웨어에 의존하는 소프트웨어 탄생
ex)
2) 쿠키
브라우저에 저장된 key-value로 이루어진 작은 데이터 파일
따로 설저아지 않아도 서버와의 데이터 교환이 가능하며
https나 secure옵션을 통해서 https환경에서만 교환이 가능하거나 외부에서 접근이 불 가능하도록 설정이 가능
브라우저가 닫히면 삭제, 유효기간을 명시하면 닫혀도 삭제되지 않습니다.
refresh-token
session-id
자동 로그인
팝업창 3일동안 보지않기.
3) state
보안에 좋지 않음.
웹스토리지에 저장된 로그인 정보는 영구적으로 혹은 반영구적으로 유지할 수도 있지만,
state가 맞을까요?
로그인 완료되었을때 실행해야하는 로직이 있다면 그 로직이 있고 ui를 변경시켜야한다면,
넣어둬서 저장 아래와 같은 곳에서
1) res.body
2) res.header
3) cookies(백엔드에서 프론트로 전달)
1) res.body
2) cookies
- axios인스턴스 생성시 withCredentials = true //저절로 실어짐.
- 서버간의 통신에서 쿠키를 서로 교환 가능하도록하는 옵션
3) res.header
- axios interceptor
- axios 인스턴스 생성의 default//렌더링이 될때 못불러올 수도 있음.
--------=--
1. todo cumstom,accessToke,api call에대한(전역 상태관리 자유)-> 관심사 분리,props drilling 해결을 위해 전역 상태관리를 도입해도 괜찮습니다
2. delete,update->완성시키기
axios.delete('/todo/3')
axios.put('/todo/3',{content,state})