2024/06 28

세션 인증 방식과 JWT 인증방식

1. 인증과 인가 1) 인증 : 사용자가 서버에 로그인을 요청하면 서버가 해당 사용자가 맞는지를 검증하는 과정. 로그인 등 증명과 관련.  2) 인가 : 인증 이후에 인증된 사용자에 대한 자원 접근 권한 확인 절차. 글 작성, 수정, 삭제 등 권한과 관련. 2. HTTP의 비 상태성 (Stateless) 서버는 클라이언트의 상태를 저장하지 않기 때문에 클라이언트의 요청이 있을 때 마다 새로운 인증 절차를 거쳐야 한다.하지만 이렇게 되면 서버에 요청을 보낼때마다 로그인을 하도록 요청을 해야 하는데 이는 매우 불편한 방식이다.  3. 인증 과정1) 세션 기반 인증세션 기반 인증은 사용자의 인증 정보를 서버에서 저장하고 있는 방식이다. 클라이언트가 로그인을 하면 서버는 인증 정보를 서버의 세션 저장소에 저장하..

카테고리 없음 2024.06.19

액세스 토큰을 cookie에 저장하는 방법

def login(response:Response....):     access_token = manager.create_access_token(    data={"sub": {"id": user["id"], "name": user["name"], "email": user["email"]} } )    # access_token 발급 response.set_cookie(key="access_token",value=access_token,httponly=True)   1. 서버에서 쿠키 설정: 서버에서 사용자 인증 후, JWT 토큰을 생성하고 이를 쿠키에 저장해야 합니다. 이를 위해 HTTP 응답 헤더에 **Set-Cookie**를 설정하여 토큰을 전달합니다. FastAPI에서는 response.set_c..

카테고리 없음 2024.06.19

2024. 6. 19. (수) 슈퍼코딩 부트캠프 신입연수원 Day 15 (중간보고)

배운 내용 요약 정리 : 강의 수강 후 배운 내용을 나만의 방식으로 정리1.  웹 프레임워크 1-1. SVELTE vs React1-2. 번들러 (ex. vite[비트])1-3. Firebase : 백엔드 구축 없이 백엔드 역할. / 실시간 DB, 이미지파일 업로드, 유저인증(소셜 로그인) 1-4. 배포!! 2. 번들러가 왜 필요한가?1) Java Script - 간단한 동작을 위해 만들어짐- 모듈 방식이 없는채로 탄생- 하나의 파일을 여러사람이 개발한다면? 관리도 힘들고 찾아가기도 힘들고...2) 모듈 방식이 필요하다- CommonJs라는 모듈 방식이 처음 도입.- npm의 등장으로 모듈을 모두가 공유할 수 있게 됨.- node.js, npm 등이 탄생. 3) 번들러의 탄생- 여러개의 파일을 하나로 합..

카테고리 없음 2024.06.19

2024. 6. 18. (화) 슈퍼코딩 부트캠프 신입연수원 Day 14 (중간보고)

배운 내용 요약 정리 : 강의 수강 후 배운 내용을 나만의 방식으로 정리1. JWT란?- JSON Web Token의 약자로, 유저 인증과 관련된 기술.- Base64로 인코딩 되어 있음- JWT는 사용자 정보를 토큰에 포함시킴.(세션은 사용자 정보를 서버측에서 DB를 통해 관리)- 특정 시간이 지나면 refresh token 발급으로 보안성 향상1-1 Refresh Token1) Access Token의 유효기간은 짧다. (ex. MS:60days, Amazon:1hour)2) Refresh Token의 유효기간은 길다. (ex. MS : 1year)3) 평소에 API 통신할 때는 Access Token을 사용하고, Refresh Token은 Access Token이 만료되어 갱신될 때만 사용한다.즉,..

카테고리 없음 2024.06.19

2024. 6. 17. (월) 슈퍼코딩 부트캠프 신입연수원 Day 13 (중간보고)

TO-DO LIST : 오늘의 할 일 작성배운 내용 요약 정리 :  1. 시간 계산const calcTime = (timestamp) => { //DB에 입력된 Date객체 값 가져와서 const curTime = new Date().getTime() - 9 * 60 * 60 * 1000; //UTC+9 보정 9시간*60분*60초*1000밀리세컨드 const time = new Date(curTime - timestamp); //현재시각에서 데이터 입력 당시 시각 빼기 const hour = time.getHours(); //데이터 삽입시 부터 흐른 시 const min = time.getMinutes(); // " 흐른 분 const sec = time.getSeconds(..

카테고리 없음 2024.06.17

2024. 6. 15. (토) 슈퍼코딩 부트캠프 신입연수원 Day 12 (주간보고)

이번 주 목표 달성 여부 및 다음 주 목표 설정 :  이번 한주도 실습 잘 따라하고 과제도 잘 수행했다. 매일 매일 조금씩이라도 할 수 있는 만큼 공부하고 포기하지 않는다는게 중요한 것 같다. 다음주도 기초주차 마무리 잘 하는 것이 목표이다!부족한 점 : 아무래도 처음 배우는 것이다 보니 강의를 들으면서 따라가기 바빴는데 일일보고, 중간보고를 하며 다시 한 번 정리를 해보는게 도움이 되는 것 같다. 스스로 시도해본 것들 : 과제에 대해서 다른 블로그 검색, chatGPT 활용 등을 통해 과제를 스스로 수행 및 완성된 것을 보니 하나하나 배워가는것이 재밌기도 하고 아직 멀었다는 생각도 들고 그랬다.알게된 점 : 이제야 조금 프론트엔드와 백엔드의 연결 방식에 대해서 알 것 같다. 아직 많은 모듈과 api 등..

카테고리 없음 2024.06.15

DB의 JOIN

1. INNER JOIN : 테이블의 교집합 부분으로, 두가지 테이블이 겹치는 부분에 해당하는 값을 가져온다.2. LEFT (OUTER) JOIN : FROM 테이블에 초첨을 맞춘 JOIN 으로 , A의 값을 모두 가져오고 B에서는 A와 겹치는 부분만 가져온다.3. RIGHT (OUTER) JOIN : OUTER JOIN 테이블에 초첨을 맞춘 JOIN으로, B의 값을 모두 가져오고, A에서는 B와 겹치는 부분만 가져온다.4. FULL OUTER JOIN : 두 테이블의 합집합 부분으로, 두 테이블 모두의 값을 가져온다.       출처 : https://data-marketing-bk.tistory.com/entry/SQL-JOIN-%ED%95%9C-%EB%B0%A9%EC%97%90-%EC%A0%95%E..

카테고리 없음 2024.06.14

2024. 6. 14. (금) 슈퍼코딩 부트캠프 신입연수원 Day 11 (중간보고)

중간 보고 양식(월~금요일)TO-DO LIST : DB에 데이터를 저장하고 저장된 데이터를 가져오는 방법 학습배운 내용 요약 정리 : 1. DB에서 BLOB 이란? Binary Large Object의 약자로, 텍스트나 숫자 같은 일반적인 데이터와 달리 이미지, 오디오, 비디오 등과 같은 데이터를 저장하기 위한 타입. 2. Form과 Annotated를 사용하기 위한 importfrom fastapi import FastAPI, UploadFile, Formfrom fastapi.staticfiles import StaticFilesfrom typing import Annotated2-1 프론트엔드에서 form에 있는 데이터를 보낼 것이기 때문에 Form 을 사용하였으며, @app.post("/items..

카테고리 없음 2024.06.14

2024. 6. 13. (목) 슈퍼코딩 부트캠프 신입연수원 Day 10 (중간보고)

중간 보고 양식(월~금요일)TO-DO LIST : 백엔드 CRUD 구현 마무리, DB 사용법 및 연동프론트엔드에서 fetch로 put 요청 (UPDATE) 보내는 부분async function editMemo(event) { const id = event.target.dataset.id; const editInput = prompt("수정할 내용을 입력하세요"); const res = await fetch(`/memos/${id}`, { method: "PUT", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ id, content: editInput, }), ..

카테고리 없음 2024.06.13

2024. 6. 12. (수) 슈퍼코딩 부트캠프 신입연수원 Day 9 (중간보고)

중간 보고 양식(월~금요일)TO-DO LIST : fastAPI로 서버를 만들고 python으로 CRUD 동작 실습배운 내용 요약 정리 : - 백엔드에 정보를 보내는 방법 1) Path parameter : 특정 리소스를 식별하고 싶을때 ex) /users/123 -> id가 123인 user를 찾는다 2) Query parameter  : 정렬 또는 필터링을 하고 싶을때 ex) /users?age=20 -> 나이가 20살인 users 3) Request Body : POST요청을 보내는 것으로 시작. 데이터 추가 동작. URL로 구분하는것이 아닌 body에 담긴 내용을 토대로 구분함.uvicorn main:app --reload- 서버 실행 명령어 @app.get('/items')def read_ite..

카테고리 없음 2024.06.12