최종주차

김나현·2024년 9월 28일
0

장고 AUTH+회원가입
개념 싹 훑기

  • 인증(Authentication) : 내가 누구인지를 입증 = 너 로그인 했어?

  • 권한(Authorization) : 수행할 수 있는 자격 = 너 로그인한건 알겠는데 이거 할 권한 있어?

HTTP

현대의 모든 웹에서의 데이터 교환의 기초가 된다.
->작동방식을 알아야 한다.

http특징
1.비연결 지향connectionless
한번 요청과 응답이 왔다 가면
연결이 끊어지는 것.
(또 요청하려면 또 연결해야한다)

2.무상태stateless(1번 특징으로 인한 특징, 연속성 없음)
한번 요청과 응답이 왔다 가면 서로가(클라-서버) 서로의 정보를
기억 하지 않는 것.

예)사용자가 로그인을 한 후 페이지를 새로고침하면, 서버는 사용자가 이미 로그인했는지 모릅니다.

--->로그인 한 번 하고 나면 로그인한 상태유지가 필요하다.
이 때문에 서로를 기억하기 위해 필요한게 바로 세션, 쿠키, 토큰이다.

참고
HTTP/1.0은 비연결 지향적이었지만,
HTTP/1.1 이상은 기본적으로 지속 연결을 사용하여 연결 지향적인 성격을 갖게 되었습니다.
그래서 강의에서 다뤄진 버전이 무엇이냐에 따라 다르게 설명될 수 있습니다. 최신 버전 기준으로 보면, HTTP는 기본적으로 연결을 유지하는 방식으로 동작합니다.

HTTP/1.0, HTTP/1.1, HTTP/2, 그리고 HTTP/3 모두 무상태 프로토콜(stateless protocol)이라는 공통된 특징을 가지고 있습니다. 즉, 각 요청과 응답은 독립적이며, 서버는 이전 요청의 상태를 자동으로 기억하지 않습니다.

무상태 프로토콜의 의미
HTTP는 클라이언트가 서버에 요청을 보낼 때, 그 요청은 서버에게 독립적으로 처리됩니다. 즉, 서버는 이전에 클라이언트가 어떤 요청을 했는지 기억하지 않고, 각각의 요청에 대해 새로운 응답을 보냅니다.
이 때문에 상태 유지를 위해는 추가적인 메커니즘(예: 쿠키, 세션, JWT 등)이 필요합니다.

HTTP, TCP, 그리고 IP는 인터넷을 통해 데이터를 전송하는 데 사용되는 주요 프로토콜입니다. 이들은 서로 다른 계층에서 작동하며, 각각의 역할을 이해하면 인터넷 통신의 전체적인 흐름을 알 수 있습니다. 이 세 가지를 쉽게 설명하겠습니다.

  1. IP (Internet Protocol)
    IP는 인터넷에서 데이터를 전송하는 가장 기본적인 규칙을 정의합니다. 이를 쉽게 설명하면, 데이터를 목적지까지 보내는 우편 시스템과 비슷합니다.

역할: IP는 데이터를 "패킷"이라는 작은 조각들로 나누고, 각 패킷에 목적지(수신자의 IP 주소)와 발신자(보내는 사람의 IP 주소)를 붙여 보냅니다.
비유: 편지를 여러 봉투에 나눠서 보내는 것. 각 봉투에 주소를 붙이고 목적지까지 배달합니다.
한계: IP는 데이터가 도착하는지, 도착한 순서가 맞는지 확인하지 않습니다. 우체부가 편지를 보냈지만, 도착 여부는 확인하지 않는 것처럼요.
2. TCP (Transmission Control Protocol)
TCP는 IP의 한계를 보완해주는 프로토콜입니다. IP가 데이터를 전송하는 역할을 한다면, TCP는 데이터가 잘 도착하는지 확인하고, 정확한 순서로 재조립하는 역할을 합니다.

역할: TCP는 데이터를 패킷으로 나눈 후에 각 패킷이 순서대로 잘 도착했는지 확인하고, 문제가 있으면 다시 요청해서 재전송합니다.
비유: 누군가에게 편지를 보내고, 그 사람이 편지를 잘 받았는지, 순서대로 받았는지 확인하는 과정입니다. 만약 편지 한 장이 없어지거나 순서가 엉켰다면 다시 요청해서 받는 것과 같아요.
장점: 신뢰성이 높습니다. 데이터가 손실되거나 순서가 뒤바뀌는 문제를 TCP가 해결해줍니다.
3. HTTP (Hypertext Transfer Protocol)
HTTP는 웹 브라우저와 서버 간에 데이터를 주고받을 때 사용하는 프로토콜입니다. 우리가 인터넷을 사용할 때, 웹 페이지를 열거나 데이터를 주고받는 과정에서 HTTP가 사용됩니다.

역할: 웹 브라우저가 웹 서버에 요청을 보내고, 서버가 그 요청에 대한 응답을 보내주는 과정을 관리합니다. 요청(예: 페이지를 열기 위한 요청)과 응답(예: HTML 문서 전송)을 주고받는 규칙입니다.
비유: HTTP는 웹 서버에게 "이 페이지를 보여줘"라고 요청하는 것과 같습니다. 서버는 그 요청에 맞는 웹 페이지를 보내줍니다.
기반: HTTP는 TCP 위에서 동작합니다. 즉, HTTP 요청과 응답도 TCP를 통해 전송되며, 그 데이터는 다시 IP를 통해 이동합니다.
전체 흐름을 쉽게 설명하자면:
IP: 데이터를 목적지까지 보내는 일종의 우편 시스템입니다. 패킷에 주소를 붙여서 목적지까지 보냅니다.
TCP: 데이터가 잘 도착했는지, 순서가 맞는지 확인하는 우체부입니다. 문제가 있으면 재전송 요청을 해서 제대로 도착하도록 보장합니다.
HTTP: 웹 브라우저와 웹 서버 간의 대화를 담당합니다. 요청하고 응답하는 과정을 관리하며, TCP/IP를 기반으로 동작합니다.
한 가지 예:
웹 브라우저에서 www.example.com을 요청하면, HTTP가 "이 웹 페이지를 요청"합니다.
TCP가 요청을 패킷으로 쪼개고, 각 패킷이 제대로 도착하도록 관리합니다.
IP는 각 패킷을 목적지 서버까지 전달하는 역할을 합니다.
서버는 그 요청을 받아 다시 TCP/IP를 통해 웹 페이지 데이터를 패킷으로 쪼개 보내고, 브라우저는 이를 받아 조립해 사용자에게 보여줍니다.
이렇게 세 가지 프로토콜이 협력하여 우리가 웹을 쉽게 이용할 수 있도록 돕습니다!

한마디로 정의하자면
IP: 데이터를 목적지까지 전달하는 주소 시스템.
TCP: 데이터가 안전하게, 순서대로 도착하도록 보장하는 프로토콜.
HTTP: 웹 브라우저와 서버가 데이터를 주고받는 대화 규칙.

"Pitch"
비즈니스에서: 아이디어나 상품을 간단하게 설명하고 제안하는 것을 말합니다. 예를 들어, 투자자에게 사업 아이디어를 설명하는 "피치"를 할 수 있습니다.


프로젝트 시작>>>>
가장 먼저 목적을 정한다.

목적이 정해지면
목적:

목적을 달성하기 위한 방법을 정한다
1.
2.

OUTLINE잡기

1.현재 겪고 있는 문제

  1. 문제 핵심원인 분석

  2. 그에 대한 solution

  3. 기대효과 & 근거

  4. 추친 방법, 계획


로그인구현 - 쿠키, 세션필요

쿠키(Cookie): 사용자의 브라우저(로컬 컴퓨터 브라우저)에 저장되는 작은 데이터(키-밸류문자열)로, 서버와의 상호작용을 유지하거나 사용자 정보를 기억하는 데 사용됩니다.

  • 내 브라우저에 있는거라 조회도 쉽고 수정도 쉽다.

-장바구니 기능(로그인하지 않아도 가능함) 데베에 저장이 아닌 쿠키에다가 많이 저장을 해놓는다.

-팝업창 (오늘하루보지않기 팝업 = false)

-맞춤형 광고

한 줄 정리
웹 페이지에 요청을 보내면 서버가 쿠키를 함께 전달하고
이후부터는 같은 서버에 보내는 모든 요청에 쿠키를 함께 담아서 요청을 보내게 된다.

세션(Session): 서버에 저장된 사용자 상태 정보로, 사용자가 웹사이트에 접속한 동안 지속되는 연결을 관리합니다. 세션은 브라우저를 닫으면 종료되는 경우가 많습니다.

쿠키는 웹 브라우저에 저장되는 작은 데이터 조각으로, 웹사이트가 사용자의 세션 정보를 유지하거나 사용자 설정을 기억할 수 있게 해줍니다. 쿠키에는 다음과 같은 정보가 포함될 수 있습니다:

세션 정보: 사용자가 로그인한 상태를 유지하기 위한 세션 ID.
사용자 설정: 언어, 테마, 글자 크기와 같은 사용자 설정.
트래킹 정보: 웹사이트 방문 기록이나 클릭 정보를 기반으로 한 사용자 행동 분석 정보.
인증 토큰: 사용자가 인증된 상태인지 확인하기 위한 정보.
임시 데이터: 장바구니 정보나 폼에 입력된 데이터처럼 일시적으로 필요한 정보.
쿠키가 브라우저를 닫으면 종료되는지는 쿠키의 만료 시간(expiration time)에 따라 다릅니다.

쿠키는 수명이 있다.
세션 쿠키 (Session Cookie): 브라우저를 기억-브라우저가 종료되면 자동으로 삭제됩니다. 주로 세션 유지와 같은 일시적인 데이터를 저장합니다.

영속(지속) 쿠키 (Persistent Cookie): 하드디스크에 저장(기억)- 특정 기간 동안 유지되며, 브라우저를 닫아도, 컴퓨터를 재시작해도 남아있다.(Max-Age속성값에 삭제할시기 명시해둠:만료 시간이 될 때까지 유지됩니다). 예를 들어, 자동 로그인 기능을 위한 쿠키는 영속 쿠키입니다.

쿠키는 보통 HTTP 응답이나 자바스크립트를 통해 생성되고 관리되며, 각 쿠키마다 사이트가 지정한 만료 시간이 다를 수 있습니다.

쿠키는 수정할 수 있기 때문에 쿠키에 대한 검증이 필요하다(최초에 서버가 발급해준 쿠키가 맞는지) ->세션이 생긴 이유
서버는 세션id(임의의 난수 문자열)을 만들어서 기억한다(데베 또는 메모리에 세션아이디와-유저)
서버가 응답시에 쿠키에다가 세션아이디를 넣어서 클라이언트 한테 준다.
다음에 클라이언트가 서버한테 요청을 보낼때 쿠키(세션id가 들어있는)를 같이 보내게되고 서버는 받아서 세션id확인-세션id기억장소로감, 대조-밸류값확인-확인(유저, 등등...): "이거시 바로 세션"
검증성공했다면- 로직처리

"세션이 쿠키를 이용해서 이루어지는 기술"

profile
참 쉽죠? #개발계의 밥아저씨를 꿈꿉니다⋆⁺₊⋆ ☾⋆⁺₊⋆

0개의 댓글