
| 부분 | 설명 | 예시 |
|---|---|---|
| Header | 사용된 암호화 알고리즘과 타입 정보 | {"alg": "HS256", "typ": "JWT"} |
| Payload | 유저 정보, 토큰 타입, 만료 정보 등 (Base64 인코딩된 공개 데이터) | {"user_id": 1, "exp": 1712345678} |
| Signature | Header + Payload를 서버 비밀키로 해싱한 서명 (위조 방지용) | HMAC-SHA256 |
| 항목 | 설명 |
|---|---|
| Access Token | 인증 요청 시 사용, 유효기간 짧음 → 탈취되더라도 영향 최소화 |
| Refresh Token | Access 만료 시 재발급 용도로 사용, 유효기간 김 |
보안성과 편의성 균형을 맞추기 위해 분리해서 사용한다.
Access 토큰은 짧게, Refresh 토큰은 길게 설정해서 자주 로그인하지 않아도 되게 하면서 보안을 유지할 수 있다.
Djoser는 Django에서 회원가입, 로그인, 비밀번호 재설정 등 인증 기능을 API 형태로 자동 제공하는 라이브러리이며 DRF(Django Rest Framework) 기반으로 동작한다.
: 복잡한 회원 시스템을 손쉽게 API로 구현 가능
: 회원가입 / 로그인 / 탈퇴 등 엔드포인트 자동 제공
: JWT, Token 등 다양한 인증 방식과 연동 가능
: 커스터마이징이 비교적 쉬움
엔드포인트 란?
클라이언트(브라우저, 앱 등)가 서버에 요청을 보낼 수 있는 "주소(URL)"
| 엔드포인트 | 메서드 | 설명 |
|---|---|---|
/api/auth/users/ | POST | 회원가입 |
/api/auth/jwt/create/ | POST | 로그인 (JWT 발급) |
/api/auth/jwt/refresh/ | POST | Access Token 재발급 |
/api/auth/users/me/ | GET | 내 정보 가져오기 |
/api/auth/users/reset_password/ | POST | 비밀번호 재설정 |
import { createContext } from "react";
export const ThemeContext = createContext();
<ThemeContext.Provider value={"dark"}>
<App />
</ThemeContext.Provider>
import { useContext } from "react";
import { ThemeContext } from "./ThemeContext";
const MyComponent = () => {
const theme = useContext(ThemeContext);
return <div>현재 테마는 {theme}</div>;
};
| 상황 | 설명 |
|---|---|
| 다국어(i18n) 설정 | 전역 언어 설정 관리 |
| 테마 설정 (다크모드 등) | 모든 페이지에서 테마 정보 공유 |
| 권한/역할 관리 | admin, user, guest 같은 유저 권한 상태 공유 |
| 현재 재생 중인 음악 정보 | 플레이어가 어디에 있든 현재 곡 정보 유지 |
📌 정리 한 줄
JWT의 구조를 이해하고, 인증 흐름에서 Access/Refresh를 구분하며, Djoser와 React Context API를 통해 인증/전역 상태를 효율적으로 관리할 수 있다.