Authentication
ct가 로그인+something 요청 → db에 있는 정보라면 server는 session ID
생성.
session ID
하나를 ct(쿠키)로 보낸다. 그리고 서버에도 하나 가지고 있음.(userid저장)
[req.session.save](http://req.session.save)
:: 세션에 userId를 저장.
Authorization
- ct가 썸띵 요청시 (예를들어, userInfo) → 로그인 성공시 실패시 둘로 나눠서 응답을 줘야함
```jsx
이때, 로그인확인
> session객체에 값이 있는 경우 ! (서버의 userid===sessionID)
> athentication 된것으로 판단
```
- 로그인이 확인되면, db에서 요청정보를 찾아서 ct에게 응답해준다.
Authentication
- CT가 (헤더에 타입을 실어서) 요청을 보냄 → db에 있는 유저라면, 액세스/리프레시 토큰
생성
( sign( data, 비밀키, 만료일 등의 옵션 ) → data = 요청 해당 유저의 인포 )
```jsx
액세스 토큰 : state (res.send)
리프레시 토큰 : 쿠키! (res.cookie)
```
Authorization
- CT가 userinfo를 서버에 요청!
포인트 : 헤더에 토큰과, 타입을 고정값으록 보내주어야 한다.
server는 보낸 토큰을 받아서, 액세스 토큰의 유효성을 판별하여
유효시/유효하지않을시 나눠서 응답을 해야함.
( verify 메소드 : ct보낸 토큰값
, 환경변수에 지정해둔 액세스비밀키
)
=⇒ 유효시 액세스토큰값반환
- 유효시 ct요청 정보를 db에서 찾아서 정보가 있다면, `res.json`으로 정보를 보내준다.
액세스토큰 갱신하기
ct가 리프레시토큰에 요청을 보냄 get
서버는 리프레시 토큰이 존재하는지 1차로 확인하고 존재한다면,
//// 2차로 리프레시토큰의 유효성을 판별(verify)
리프레시토큰이 유효하다면
→ (찾은정보= 요청에 대조하는 정보) 를 데이터에 다시 담아서 액세스토큰을 생성
→ 새 액세스토큰을 담아서 res.json한다. 그러면 ct 쿠키가 가지고 있는 토큰값 갱신