나만의 작은 도서관

[TIL] 240524 캠프 40일차: jsonwebtoken 라이브러리의 sign() 함수 본문

Today I Learn

[TIL] 240524 캠프 40일차: jsonwebtoken 라이브러리의 sign() 함수

pledge24 2024. 5. 24. 21:35

오늘 배운 내용                                     

jsonwebtoken 라이브러리의 sign() 함수

jsonwebtoken 라이브러리의 sign() 함수는 jwt토큰을 발급받기 위한 함수이다. sign() 함수는 매개변수 2개를 요구하는데, 첫번째 param으로 payload(넣고자 하는 데이터), 두번째 param으로 key를 입력하면된다. 기본적인 사용방법에 대한 예시는 다음과 같다.

// jwt.sign(payload, secretOrPrivateKey, [options, callback])
jwt.sign("email@gmail.com", "secretKey");

 

만약, 각 param에 여러 데이터를 넣고 싶다면 객체 형태로 넣어주면 된다.

// jwt.sign(payload, secretOrPrivateKey, [options, callback])
token = jwt.sign(
  {
    email: "email@gmail.com"
    type: "JWT",
    nickname: nickname,
    profile: profile,
  },
  "secretKey"
);

 

옵션으로 세번째 param에 추가 정보를 기입할 수 있다. 주로 입력하는 내용으로 토큰 만료 시간이나 암호화 알고리즘 종류 등이 있다.

// jwt.sign(payload, secretOrPrivateKey, [options, callback])
token = jwt.sign(
  {						// 첫번째 param
    email: "email@gmail.com"
    type: "JWT",
    nickname: nickname,
    profile: profile,
  },
  "secretKey",					// 두번째 param
  {						// 세번째 param
    expiresIn: "15m", // 15분후 만료
    issuer: "토큰발급자",
  }
);

 

크롬에서 헤더 정보 보기

 

jwt를 Authorization 헤더에 넣어 요청하는 방식이 요구되면서, jwt가 Authorization 헤더에 정상적으로 들어갔는지 확인하고 싶어졌다. 확인하는 방법은 간단했다.

  1. 개발자 도구를 들어간다(마우스 오른쪽 클릭 -> 검사 또는 화면 오르쪽 상단 ... 클릭 -> 도구 더보기 -> 개발자 도구)
  2. 네트워크 탭으로 들어간다.
  3. 현재 페이지를 클릭해서 들어가서 헤더를 확인한다

들어가면 이런 화면이 뜬다.

트랜젝션

트랜젝션은 여러 쿼리문의 묶음이자, 데이터베이스에서 데이터 일관성을 보장하기 위한 작업의 논리적 단위이다. 예를 들어, 은행에서 계좌이체를 하는 과정이 발생했다 가정해보자.

계좌 이체를 하는 과정은 간단히 출금하는 계좌의 금액 차감(1번 과정), 입금받는 계좌의 금액 추가(2번 과정)가 있다.  여기서 1번 과정을 진행하고 2번 과정을 정상적으로 진행했다면 문제가 되지 않지만, 문제가 발생하여 1번 과정만 처리되고 2번 과정이 처리되지 않았다면, 차감만 발생하는 문제가 발생한다. 이런 문제를 해결하기 위해선 1번, 2번 과정들이 전부 처리되거나 전부 실패하도록 해야한다. 따라서 1번, 2번 과정을 하나로 묶은 다음, 데이터를 처리하는 논리적 단위로 만든 트랜젝션이 필요하게 된 것이다.

 

오늘 한 일                                       

더보기
  • 회원가입 API 제작 및 검증 완료
  • Account, Character, Item DB생성