TIL 67

내일배움캠프 6주차 수요일 TIL

각자의 작업을 Dev 에 합치는 작업을 진행하였다.- 내가 오늘 완성한 기능인증 미들웨어 로그인 성공시 엑세스 토큰(5m, 사용자에게 전달), 리프레시 토큰(7d, db에 저장) 생성, 이메일 정보 헤더에 저장해 전달 사용자의 요청과 함께 서버로 다시 전달된 엑세스 토큰 검증엑세스 토큰이 유효할 때jwt.verify를 통해 엑세스 토큰의 유효성 검사 유효한 경우 accountid를 조건으로, prisma.findFirst()를 통해 사용자 정보 조회 계정정보를 req.account에 저장하여 이후 API에서 사용할 수 있다엑세스 토큰이 만료되었을 때만료된 토큰이 아닌 이메일 정보 헤더의 이메일을 통해 accountid 도출 도출한 accountid로 리프레시 토큰 확인 2-1. 리프레시 토큰 유효 검증 ..

TIL 2024.12.04

내일배움캠프 6주차 화요일 TIL

기존 엑세스 토큰이 만료되어 새로운 엑세스 토큰을 생성하기 시작하는 부분의 코드이다.db에 저장되어 있는 리프레시 토큰을  accountid를 통해 불러오기 위해, 만료된 엑세스 토큰을 기반으로 accountid를 불러와야 했다.if (error.name === 'TokenExpiredError') { // 클라이언트가 전달한 엑세스 토큰이 만료 // 다시한번 엑세스 토큰 추출 const { authorization } = req.headers; const [tokenType, token] = authorization.split(' '); // 리프레시 토큰을 데이터베이스에서 조회 // accountid가 null or undefined일때 오류 대신..

TIL 2024.12.03

내일배움캠프 5주차 금요일

아이템 시뮬레이터 프로젝트개발 기간 24/11/25~24/11/28 (4일) 코드 구조 서버 설정 (app.js) Express 애플리케이션을 생성 환경 변수를 로드하여 서버를 설정 다양한 API 라우터를 /api 경로에 연결하여 회원가입, 로그인, 캐릭터, 삭제, 검색, 아이템 관련 기능 제공 지정된 포트(3000)에서 서버를 실행합니다. Prisma 스키마 Item, Accounts, Characters, Character_Inventory, Character_Items의 다섯 가지 모델 정의 Item : 아이템의 고유 ID, 코드, 이름, 스탯, 가격, 캐릭터 인벤토리와 아이템 간의 관계 설정 Accounts: 계정 정보, 이메일, 아이디, 비밀번호, 이름, 나이, 성별, 생성일시 Character..

TIL 2024.11.29

내일배움캠프 5주차 수요일 TIL

// (?=.*\d) : 최소한 1개 이상의 숫자가 포함되어야 합니다// [a-z0-9]+ : 소문자와 숫자로만 이루어져야 합니다// ^와 $ : 문자열의 시작과 끝을 의미합니다.const idForm = /^(?=.*[a-z])(?=.*\d)[a-z0-9]+$/;해당 코드로 수정하여 영어(소문자) + 숫자 가 포함된 형식으로 아이디를 생성하도록 적용하였다. // 로그인 APIimport express from "express";import { prisma } from "../utils/prisma/index.js";import bcrypt from "bcrypt";import jwt from "jsonwebtoken";const router = express.Router();router.post("/s..

TIL 2024.11.27

내일배움캠프 5주차 화요일 TIL

금일 작업 중 회원가입 API를 작성하고, 서버를 연후 인섬니아에서 입력값을 제대로 받는지 테스트하였다.{ "email" : "dbeodnjs1001@naver.com", "password" : "sfzeho2gy", "name" : "유대원", "age" : 26, "gender": "male"}해당 내용을 인섬니아 바디에 넣고 포스트하였을 때, 서버가 꺼지면서 DATABASE_URL을 제대로 읽어오지 못한다는 오류메시지가 표시되었다. env 파일에  DATABASE_URL은 양식대로 잘 적었고, DB와의 연결도 문제 없었기 때문에 튜터님의 도움을 받아 진행하였다.피드백 결과는 DATABASE_URL을 담고있는 파일이 app.js이 있는 s..

TIL 2024.11.26

내일배움캠프 5주차 월요일 TIL

쿠키?브라우저가 서버로부터 받은 정보를 클라이언트측에 저장하는 방식내가 브라우저 방문 시 쿠키를 저장한 후, 이후 방문 때 마다 브라우저는 해당 쿠키도 요청과 함께 서버로 보낸다.서버가 정한 기간에 따라 유효기간 존재한다인증뿐만 아니라 다양한 정보를 담을 수 있다.세션?서버에서 관리되는 사용자 정보를 저장하는 방식.사용자가 로그인할 때 세션 ID가 생성되고, 이 ID를 통해 사용자를 식별한다. 세션은 서버의 세션 DB에 모든 정보를 저장해야 하므로, 사용자 수가 많아질수록 데이터베이스의 부담이 커진다.서버로 가는 모든 요청은 이전 요청과 독립적으로 처리된다.요청이 끝나면 서버는 사용자의 정보를 잊어버린다. > 매 요청 시마다 사용자가 누구인지 서버에 알려줘야 한다.세션을 통한 사용자 인증 과정:사용자가 ..

TIL 2024.11.25

내일배움캠프 4주차 금요일 TIL

이전에 사용했던 MongoDB는 비관계형 데이터베이스(NoSQL) MySQL이 바로 관계형 데이터베이스(RDB) NoSQL - 데이터 형식이 자유롭다저장(Write)과 읽기(Read) 작업이 더욱 빠르며, 복잡한 비즈니스 로직 없이 주로 데이터 읽기와 쓰기에 중점을 둔 서버에서 주로 사용 RDB - 열, 행에 데이터를 가진 테이블이 존재욱 복잡한 비즈니스 로직과 정형화된 데이터를 체계적으로 관리할 수 있어 더욱 안전한 서버 환경을 구성하기에 좋다보안이 중요한 기관이나, 은행과 같은 안전성을 중시하는 회사 MYSQL - 가장 널리 사용되는 오픈소스 관계형 데이터베이스(RDB)데이터베이스를 관리하는 가장 대표적인 언어인 SQL(Structured Query Language)을 사용하여 데이터를 조작하고 관리..

TIL 2024.11.22

내일배움캠프 4주차 화요일 TIL

Node.js 환경에서 Express 프레임워크를 사용하여 간단한 웹 서버를 설정import express from 'express'; // Express 모듈 가져오기(서버 구축)import goodsRouter from './routes/goods.js'; // goods.js 파일에서 goodsrouter를 가져온다const app = express(); // Express 함수를 호출const PORT = 3000; // 서버가 수신 대기할 포트 번호를 3000으로 설정, 포트 >> 실행할 프로그램의 주소?app.get('/', function(req, res) { res.send('Hello World123!'); }); // 루트 경로(/)에 대한 GET 요청을 처리하는 함수app.ge..

TIL 2024.11.19

내일배움캠프 4주차 월요일 TIL

웹 브라우저와 통신 방식웹 브라우저인터넷에서 정보를 검색하고 표시하는 소프트웨어.정적 페이지: 내용 고정.동적 페이지: 내용 변동 가능.통신 과정URL 입력 → DNS 조회 → IP 주소 확인 → 웹 서버 요청 → 데이터 수신 → 페이지 표시.URL 구조://:/DNS웹 주소를 IP 주소로 변환.IP 주소고유 주소 (IPv4: 192.168.0.1, IPv6: 2001:0db8:...).HTTP와 HTTPSHTTP데이터 전송을 위한 프로토콜.서버와 클라이언트 간의 의사소통 규칙.HTTPSHTTP에 보안 기능 추가.데이터 암호화로 안전한 통신.HTTP 요청과 응답기본 개념요청(Request)과 응답(Response)으로 구성.동작 과정브라우저 요청 → 서버 응답 → 페이지 표시.개발자 도구F12 또는 ⌘ ..

TIL 2024.11.18