주말 학습 내용
https://kagan-draca.tistory.com/272
1-8 Prisma Method(+Posts 게시판 만들기 서버와 DB 연결)
1. Prisma의 Method 살펴보기 및 밑 작업하기Prisma는 mongoose와 동일하게, findMany(), findFirst(), findUnique() 등 다양한 메서드를 지원합니다. mongoose를 사용했을 때는 Schema를 이용하였다면,Prisma에서는 Prisma
kagan-draca.tistory.com
https://kagan-draca.tistory.com/274
1-9 쿠키와 세션
1. 쿠키와 세션쿠키(Cookie) : 브라우저가 서버로부터 응답으로 Set-Cookie헤더를 받은 경우 해당 데이터를 저장한 뒤 모든 요청에 포함하여 보냅니다. ex) naver.com 같은 웹
kagan-draca.tistory.com
https://kagan-draca.tistory.com/275
1-10 JWT
1. JWT가 무엇인가? JWT(Json Web Token)은 웹 표준으로써, 서버와 클라이언트 사이에서정보를 안전하게 전송하기 위해 도움을 주는 웹 토큰(Web Token)입니다. - JSON 형태의 데이터를 안전하게 전송하고
kagan-draca.tistory.com
https://kagan-draca.tistory.com/276
1-11 [게시판 프로젝트] 시작하기 (DB 설계 및 Prisma 모델 정의)
1. [게시판 프로젝트] 설계하기 각 테이블 간의 관계 및 요구사항을 정리하면, 사용자(Users)는 1개의 사용자 정보(UserInfo)를 가진다.= Users 테이블과 UserInfo 테이블은 1 : 1 관계를 가진다. 사용자(Us
kagan-draca.tistory.com
https://kagan-draca.tistory.com/277
2-1 [게시판 프로젝트] 인증 인가 (로그인, 회원 가입 API)
1. 인증, 인가 살펴보기 1) 인증(Authentication)인증(Autentication)은 서비스를 이용하려는 사용자가 인증된 신분을 가진 사람이 맞는지 검증하는 작업 ex) 로그인 기능!!! 로그인 기능은 일반적으로 id,
kagan-draca.tistory.com
주말을 이용해서 어떻게든 월요일부터는 게임 아이템 시뮬레이션을 시작할려고 했지만...
위장 장애 + 비염 + 벌초로 인해 숙련 2주차 초입까지 밖에 듣지 못 했다.
주말에는 JWT를 이용해 세션을 암호화하고, 그렇게 생성된 세션을 바탕으로
유저의 상태 확인 및 권한을 부여하는 방법에 대해 학습할 수 있었다.
또한, 기존 MySQL은 개발자가 여러 API를 만들었다는 가정하에
테이블의 Colum을 수정할 경우 전체 API를 수정해야하는 번거로움이 존재했다.
이러한 문제는 Prisma를 사용하면 해결할 수 있었지만,
Prisma를 처음 배우는 나(같은 사람에게는) 새로운 문법을
익히는데 시간이 상당히 요구됐다...
오늘 학습 내용
https://kagan-draca.tistory.com/278
2-2 Access Token, Refresh Token
1. Access Token이 무엇인가? Access Token은 사용자의 인증(ex : 로그인)이 완료된 후 해당 사용자를 인증하는 용도로 발급하는 토큰입니다. 이전에 쿠키(Cookie)에 jwt를 설정하고, 지정된 만료 시간이지
kagan-draca.tistory.com
https://kagan-draca.tistory.com/279
2-3 [게시판 프로젝트] 미들웨어
1. 로그(Log) 미들웨어 로그 미들웨어(Log Middleware)는 클라이언트의 모든 요청 사항을기록하여 서버의 상태를 모니터링하기 위한 미들웨어입니다. 로그 미들웨어는 클라이언트의 요청을 기록하
kagan-draca.tistory.com
https://kagan-draca.tistory.com/280
https://kagan-draca.tistory.com/281
2-5 [게시글 프로젝트] 댓글 생성 API
1. 게시글에 댓글 생성 API댓글 기능은 게시글 기능과 부모 - 자식 간의 관계로 구성된다. 일반적인 사이트를 생각해보면, 게시글과 별도로 댓글이 존재하지 않고,특정 게시글에 대한 하위 개념
kagan-draca.tistory.com
https://kagan-draca.tistory.com/282
2-6 트랜잭션(Transcation)
1. 트랜잭션(Transcation)트랜잭션(Transcation)은 작업의 완정성을 보장해주기 위해 사용되는 개념입니다.특정한 작업을 전부 처리하거나, 전부 실패하게 만들어 데이터의 일관성을 보장해줍니다. 트
kagan-draca.tistory.com
https://kagan-draca.tistory.com/284
2-8 express-session
1. express-session express-session은 Express.js에서 세션(Session)기능을 쉽게 구현하기 위한 미들웨어입니다. 세션(Session)을 사용하기 위해서는 사용자 인증과 세션 스토리지를 통해서 사용자 정보를 저장
kagan-draca.tistory.com
https://kagan-draca.tistory.com/285
2-9 [게시판 프로젝트] express-session으로 리팩토링
로그인 기능과 사용자 인증 미들웨어를 express-session을 이용해 리팩토링 할 예정 입니다.1. 초기설정yarn add express-session# express-session 미들웨어를 설치합니다.2. app.js 파일에 express-session 추가하기app
kagan-draca.tistory.com
오늘은 어떻게든 꾸역꾸역 완강을 할 수 있었다...
오늘은 Client가 Server에게 어떤 것들을 요청하고 Server는 Client에게 어떤 응답을
제공하는지 출력해주는 미들웨어와 Error처리 미들웨어를 구현해봤다.
또한 트랜잭션을 바탕으로 각각의 테이블 조회나 삽입 문을 하나의 원자 단위로 만들어
원자성, 일관성, 격리성, 지속성을 보장해주는 방법을 배웠다.
사용 방법으로는
//기존 작업 물 붙여 넣기
위와 같이 prisma.$transaction으로 함수를 호출하고
그 내부에 내장 함수로 기존 select, insert(create)문을 작성하는 방식으로 구현 가능했다.
이때, 기존 테이블의 select, insert하는 부분에 prisma를 tx(tansaction)으로 바꿔줘야 했다.
그리고 위와 같은 방식을 사용할 경우
격리 레벨을 지정해 어느 정도의 격리성을 보장해줄지 설정해줘야 했다.
다음으로, 기존 세션은 JWT 방식으로 복잡한 알고리즘으로 관리 돼 왔지만
express-session을 이용해 더욱 간단하게 관리 및 생성이 가능해졌다.
하지만, express-session은 세션ID에 접근할 때 마다 갱신하는 문제가 존재한다고 한다.
마지막으로, dotenv를 사용해 DB와 관련된 정보(아이디, 비밀번호, 포트번호) 을 .env 파일에 작성해
암호화할 수 있는 방법을 학습했다. 이때, .env 파일은 .gitignore 파일이어야 하는데
기본적으로 import를 받으면 .gitignore 상태로 실수가 없으면 괜찮을 것 같다.
'TIL' 카테고리의 다른 글
2024년 9월 11일 TIL (0) | 2024.09.12 |
---|---|
2024년 9월 10일 TIL (0) | 2024.09.11 |
2024년 9월 7일 TIL (0) | 2024.09.07 |
2024년 9월 5일 TIL (0) | 2024.09.05 |
2024년 9월 4일 TIL (0) | 2024.09.04 |