web 68

카카오페이를 이용한 간편결제에 대해 araboza

주요 구성 요소- 구매자 (상품 선택하고 결제 진행하는 사용자)- client (프론트엔드 (React), 구매자가 상호작용하는 웹사이트나 앱. 결제 요청을 받고 결제창을 호출하는 인터페이스 역할)- Server (백엔드 (Django), PG사에게 결제 승인을 요청하고, 그에 대한 응답을 받는 상점의 서버)- 페이먼트(PG사) (실제 결제 처리와 승인, 결제 상태 등을 관리하는 결제 대행사) PG(Payment Gateway)사란?PG사는 이커머스 결제 대행 서비스를 진행하는 중개업체Payment Gateway의 준말로, `‘결제를 위한 관문’`이라고 이해PG사는 카드 결제, 간편결제, 계좌이체, 가상계화(무통장입금) 등 다양한 결제 방식을 사용할 수 있게 연결 결제 flow1. 결제창 호출 (결제 준..

web/snulion 2024.10.05

상태관리에 대해 araboza (2)

상태 관리의 유형은1. 전역 vs 로컬전역 상태 관리전역 상태(global state) 관리는 프로젝트 전체에 영향을 미치는 상태를 관리하는 것로컬 상태 관리로컬 상태(local state) 관리는 특정 기능 또는 컴포넌트 내에서만 사용되는 상태를 관리하는 것 2. 클라이언트 vs 서버클라이언트는 프론트 유저 간 상호작용, 서버는 프론트 백 간 상호작용 느낌으로 이해하자고요 Redux의 원칙1. single source of truthAction → Dispatcher → Store → View의 순서로 데이터 흐름을 단방향으로 제어하기 위한 아키텍처 2. state is read-only 3. Changes are Made with Pure Functionsfunction sampleReducer(..

web/snulion 2024.10.05

상태관리에 대해 araboza

리엑트에서 상태관리가 왜 필요하냐면요* Props-Drilling 이슈  - 리액트는 단방향 바인딩을 지원함, 즉 부모의 상태를 props로 자식으로 전달할 수는 있지만, 자식의 상태를 부모로 전달할 방법은 없음  - 즉 최상위 컴포넌트의 정의하고 관리하는 props를 계속해서 전달전달 해야함* 복잡한 상태관리 로직  - 특정 state에 대한 상태관리 함수들이 산재해있다면 (여러 컴포넌트에 흩어져있다면) 점검 힘듦, 유지보수/추적이 어려움 => 전역 상태관리를 쉽게 할 수 있는 라이브러리를 쓰자 (ex. Redux) 리액트 상태관리 라이브러리에 뭐가 있냐면요redux, context-api, MobX, Recoil, Zustand, Jotai ... Redux란 뭐냐면요Flux라는 아키텍쳐를 실제로 구..

web/snulion 2024.09.25

OAuth 2.0에 대해 araboza

OAuth는 인터넷 사용자들이 비밀번호를 제공하지 않고 다른 웹사이트 상의 자신들의 정보에 대해 웹사이트나 애플리케이션의 접근 권한을 부여할 수 있는 공통적인 수단으로서 사용되는, 접근 위임을 위한 개방형 표준이다. 장점은 뭐냐면요- 사용자 비밀번호를 직접 전달/저장하지 않기 때문에 자격 정보가 노출될 위험을 줄임- 토큰 기반 인증으로 권한 부여 및 제한이 쉬움- 사용자 경험에서는 로그인 절차가 간소화되고, 동일한 계정으로 여러 서비스 로그인이 가능해져 편함 구성요소는요* 자원(개인정보)을 소유하는 주체인 Resource owner* 가입하고자 하는 서비스의 애플리케이션 서버 (Client)* 접근권한 부여하고 응답을 반환하는 서버 (Authorization Server) 동작 메커니즘은요STEP0. 통..

web/snulion 2024.09.25

Django Access Token 재발급 API

토큰에는 두 종류- access token (유효기간 짧은, 인가용 token)- refresh token (유효기간 긴, access token 재발급용 token) 토큰 재발급 과정로그인 인증에 성공한 클라이언트는 Refresh Token과 Access Token 두 개를 서버로부터 받는다.클라이언트는 Refresh Token과 Access Token을 로컬에 저장해놓는다.클라이언트는 헤더에 Access Token을 넣고 API 통신을 한다. (Authorization)일정 기간이 지나 Access Token의 유효기간이 만료되었다.Access Token은 이제 유효하지 않으므로 권한이 없는 사용자가 된다.클라이언트로부터 유효기간이 지난 Access Token을 받은 서버는 401 (Unauthori..

web/django 2024.05.20

Django JWT 토큰 기반의 인증 방식 환경 세팅하기

로직 흐름회원가입 - 클라이언트는 회원가입에 필요한 정보를 request body에 담아서 보낸다. - 서버는 이를 받아서 DB에 저장하고, 해당 유저를 인증할 때 사용될 토큰(access, refresh)을 생성한 다음 이를 쿠키에 담아 보낸다. (보통 회원가입 하면 로그인까지 한 번에 되므로)- 클라이언트는 받은 토큰을 브라우저에 저장해 둔다. 회원가입이 완료된 유저의 로그인 - 클라이언트는 로그인에 필요한 정보를 body에 담아서 보낸다. - 서버는 이 정보를 바탕으로 DB에 접근하여 등록된 User가 있는지 확인하고, 있을 경우 유저 인증에 사용될 토큰(access, refresh)을 생성한 다음 쿠키에 담아 보낸다. - 클라이언트는 토큰을 브라우저에 저장해 둔다. 권한이 필요한 기타 작업들 - ..

web/django 2024.05.20

Django Cookie, Session, 그리고 JWT

Authentication(인증)- 사용자를 식별하는 프로세스 (누구인지 확인)- 회원가입 과정, 로그인 과정Authorization(인가)- 인증된 사용자에게 특정 리소스나 기능에 접근할 수 있는 권한이 있는지 확인하는 프로세스- 누구인지 확인이 완료된 사용자에게 '특정 작업 수행 권한'이 있는지 확인- 권한이 필요한 요청 (게시글 수정, 게시글 삭제) http 통신은 Connectionless (비연결성) + Stateless (무상태성) 을 가진다어딘가에 유저 상태 정보를 저장할 필요가 있음 => Cookie, Session, Token Cookie- 사용자가 웹사이트를 방문하고 이용할 때 사용자의 브라우저에 저장되는 작은 정보 조각- 공지 메세지 하루 안보기, 장바구니 담기 기능- 사용자의 PC에..

web/django 2024.05.20

Django serializer 활용하기 - advanced

[Reminder] What is serializer?Django의 Serializer는 Django에서 모델 인스턴스나 쿼리셋을 다양한 데이터 형식으로 변환하는 데 사용됩니다. 이를 통해 Django 애플리케이션에서 데이터를 직렬화하고 역직렬화하며 클라이언트와 서버 간의 데이터 교환에 사용됩니다. One-To-One , One-To-Many , Many-To-Many 관계가 형성된 상태에서의 serializer 작성은 더 신경써야 할 부분이 있다 User - UserProfile 모델 간 OneToOne 관계 (필드 추가해 확장한 Wrapper 클래스 느낌이다)from rest_framework import ModelSerializerfrom django.contrib.auth.models import..

web/django 2024.05.14