728x90

분류 전체보기 64

[Django] dj_rest_auth 와 allauth로 유저 api 구현하기

dj_rest_auth 와 allauth 차이allauthallauth는 django 템플릿 기반에서 모델을 제외한 유저시스템 구현을 위한 기능들을 제공한다.( html 폼 기반 )allauth는 실제 존재하는 이메일인지 확인하는 '이메일인증', 소셜 서비스를 이용해서 로그인 하는 '소셜 로그인' 등을 제공한다.dj_rest_authdj_rest_auth는 유저시스템 api 구현 시 end-point을 제공한다. 로그인, 로그아웃, 토큰생성 등 기능제공( rest api 기반 )회원가입기능은 allauth 을 설치해야 사용가능하다 dj_rest_auth + allauth이 두개를 함께 사용하여 회원가입을 포함한 api 기반 유저 시스템을 구현 할 수 있다.dj_rest_auth로 allauth의 기능들을..

Project 2025.11.09

[DRF] dj-rest-auth에 JWT 토큰 설정

JWT토큰 설정을 했는데 리프레시 토큰만 반환을 안한다?프로젝트에 dj-rest-auth 를 적용시키는 과정에서 인증 요청 시 응답에 리프레시 토큰이 포함되지 않는 문제시도 1: settings 설정REST_USE_JWT = True결과: ❌ 블로그글을 참고했는데 옛날버전 기준에서 작성됐던 글이였음시도 2: REST_AUTH = { 'USE_JWT' : True, 'JWT_AUTH_HTTPONLY': False,}결과: ❌ 최신버전에서는 관련설정이 하나로 묶였다. 그런데 우리는 jwt 토큰을 사용하지만 자꾸 'rest_framework.authtoken' 을 추가하라는 에러메시지가 나온다. 또한 httponly 를 false로 해주면 액세스와 리프레스 토큰 모두 respone로 응답을 받을 ..

Django 2025.10.25

[Django] json-log-formatter 한글 깨짐 인코딩문제

"json-log-foormatter 인코딩 문제 해결"뭐가 문제였나json 로그에서 한글이 유니코드 이스케이프로 깨져보임{"message": "signup_failed: {'email': [ErrorDetail(string='\uc720\ud6a8\ud55c \uc774\uba54\uc77c \uc8fc\uc18c\ub97c \uc785\ub825\ud558\uc138\uc694.', code='invalid')]}"}시도한 것들시도 1: json_log_formatter 기본 사용'formatters': { 'json': { '()': 'json_log_formatter.JSONFormatter', },}결과: ❌ 망함이유: 기본 설정은 ensure_ascii=True라 한글이..

Project 2025.10.13

[Django] JWT 토큰 저장은 헤더? 쿠키?

JWT 토큰 저장소상황JWT 토큰을 사용하는건 좋은데 토큰을 어떻게 관리 하는게 좋을지 대한 고민옵션들옵션 1: localStorage장점: 간단, 알아서 토큰인증 수행 추가로직 x, 페이지 새로고침해도 유지단점: XSS 공격 취약, 프론트에서 요청시 헤더에 토큰 추가해줘야됨- 찾아본 결과 안좋은 반응이 많음 옵션 2: Cookie (httpOnly)장점: XSS 안전, 자동전송단점: CSRF 공격 고려 필요- 설정 복잡최종 선택 : localStorage + Cookie (httpOnly) 이유: 개발 편의성과 보안성을 고려했을때 액세스토큰은 헤더, 리프레쉬토큰은 쿠키로 결정 (단 액세스토큰은 유효기간 짧게) 우려사항:설정이 어려울 것 같음짧은시간이지만 xss공격으로 액세스토큰 탈취시 피해가 생길수 있..

Project 2025.10.07

Django 개발 환경 초기 세팅

1. 한국어 세팅LANGUAGE_CODE = 'ko-kr'TIME_ZONE = 'Asia/Seoul' 2. uv add python-dotenvenv 파일 만들고 gitignore 추가 후 settings.py 에 로드 (db설정, api키 등등.. 공유사항이 아닌것)# settings.pyfrom dotenv import load_dotenvimport osload_dotenv()SECRET_KEY = os.environ.get('SECRET_KEY') 3.static 폴더 만들기 + 필요에 따라 media 폴더도 생성(이미지, 파일업로드)# settings.pySTATIC_URL = 'static/'STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ] ..

Project 2025.09.22

DNS 쉽게 정리하기

우리가 인터넷을 쓸 때 주소창에 www.naver.com 같은 URL을 입력한다.이 순간 보이지 않는 곳에서 DNS가 일을 시작한다.1. DNS의 기본 역할DNS는 도메인 이름을 IP 주소로 바꿔주는 전화번호부다.사람은 문자 주소를 기억하기 쉽지만,컴퓨터는 숫자로 된 IP 주소만 이해한다.2. DNS 요청 과정사용자가 주소창에 URL을 입력한다.컴퓨터는 설정된 DNS 서버에 "이 주소의 IP를 알려줘"라고 요청한다.DNS 서버는 해당 도메인에 맞는 IP 주소를 찾아 응답한다.컴퓨터는 그 IP로 실제 통신을 시작한다.3. DNS 캐시(DNS Cache)매번 DNS 서버에 묻는 것은 비효율적이다.그래서 인터넷 제공업체(ISP)나 컴퓨터는 응답받은 IP 주소를 메모리에 저장한다.이걸 DNS 캐시라고 한다.DN..

네트워크 2025.09.19

TCP와 UDP 차이 쉽게 정리하기

네트워크에서 가장 많이 쓰이는 두 가지 전송 방식이 있다.바로 TCP와 UDP다.겉보기엔 비슷하지만, 실제 성격은 크게 다르다.1. 연결 방식의 차이TCP는 연결지향형이다.데이터를 보내기 전에 상대와 먼저 연결을 맺는다.전화 통화처럼 "여보세요" 하고 응답을 확인한 뒤 대화를 시작하는 방식이다.UDP는 비연결형이다.연결 절차 없이 바로 데이터를 보낸다.편지처럼 그냥 던져놓는 방식이다.2. 신뢰성의 차이TCP는 신뢰성을 보장한다.보낸 데이터가 잘 도착했는지 확인 응답을 받고,오류가 나면 재전송한다.UDP는 신뢰성을 보장하지 않는다.도착했는지 확인하지 않고, 중간에 손실돼도 그냥 넘어간다.3. 속도의 차이TCP는 검증 절차가 많아 속도가 느리다.대신 안정적으로 데이터를 전달한다.UDP는 단순해서 빠르다.다만..

네트워크 2025.09.18

파일 다운로드 중 LAN 케이블을 분리하면 TCP 연결은 어떻게 될까?

파일을 내려받는 중에 LAN 케이블을 분리하면 TCP 연결은 어떻게 될까?1. TCP는 끊어진 줄 모른다TCP는 상대가 살아있는지 직접 알 수 없다.보낸 데이터에 대한 확인 응답(ACK)으로만 연결 상태를 추측한다.따라서 케이블이 뽑히는 순간 TCP는 즉시 연결이 끊어졌다고 판단하지 않는다.2. 재전송 타이머(RTO)의 동작서버가 응답을 받지 못하면 재전송 타이머가 작동한다.처음에는 약 1초 안팎에서 시작해 이후 두 배씩 증가한다.1초 → 2초 → 4초 → 8초 → 16초 … 이런것을 조정하는걸 튜닝이라고 한다.3. 재시도 횟수의 한계TCP는 무한히 재전송하지 않는다.보통 5회 정도 재전송을 시도한다.그때도 응답이 없으면 연결을 종료한다.이 과정은 운영체제 설정에 따라 수십 초에서 수 분 걸릴 수 있다...

네트워크 2025.09.18

TCP 핵심 연결 과정 정리 5가지

1. TCP란 무엇인가TCP는 전송 제어 규약(Transmission Control Protocol)이다.데이터를 안전하게, 순서대로 전달하기 위한 약속이다.편지를 보낼 때 중간에 빠지거나 순서가 뒤섞이면 곤란하다.TCP는 이런 문제를 막아주는 우체국 역할을 한다.2. 소켓과 포트의 관계네트워크에서 데이터를 주고받으려면 소켓(Socket)을 열어야 한다.소켓은 통신을 위한 문과 같다.클라이언트: 소켓을 열면 운영체제가 임의의 포트 번호를 부여한다.서버: 특정 포트에서 대기하며 클라이언트의 요청을 기다린다.즉, 클라이언트와 서버는 각각 소켓을 열고 포트를 통해 서로 연결된다.3. TCP 연결 과정 – 3-way Handshake연결을 맺을 때는 3번의 신호 교환이 필요하다. 이를 3-way Handshak..

네트워크 2025.09.17

라우터·DHCP·ARP로 배우는 통신원리 6가지

1. 인터넷은 라우터의 연결망이다인터넷은 사실 수많은 라우터가 연결된 집합체다.라우터가 목적지까지 데이터를 최적의 경로로 전달한다.즉, 인터넷은 거대한 논리적 네트워크라고 이해하면 쉽다.LAN 구간에서는 MAC주소로 통신하고, 게이트웨이를 넘어 인터넷 구간에서는 IP주소 기반 라우팅이 이어진다.2. TTL(Time To Live)의 역할패킷이 목적지를 못 찾으면 계속 떠돌 수 있다.이걸 방지하기 위해 TTL 값이 사용된다.라우터를 한 번 지날 때마다 TTL은 1씩 줄어든다.0이 되면 패킷은 폐기된다.덕분에 좀비 패킷이 생기지 않는다.3. 단편화(Fragmentation)와 재조립패킷이 지나가는 경로의 MTU(Maximum Transmission Unit) 값을 초과할 수 있다.이때 라우터는 패킷을 잘게 ..

카테고리 없음 2025.09.15
728x90