TIL 60

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

지난주 주말까지 열심히 작업한 프로젝트를 오늘 발표회를 통해 공개하였다.발제를 더 정확히 참고하여 요구하는 점을 파악하고, 우리 팀의 강점을 위주로 발표해야하는 것을 배웠다.개발에 대부분의 시간을 사용하여 발표 준비를 비교적 덜하고 가벼운 마음으로 진행하였다. 때문에 발표부분에서 피드백이 많았던 것 같다.발표도 우리 프로젝트의 특성을 타인에세 효과적으로 알려야 하는 중요한 부분임을 상기하게 되는 계기가 되었다.이후 이번 프로젝트를 회고하였다.Keep - 현재 만족하고 있는 부분- 토큰 부분에 이전 프로젝트보다 발전된 형태로 개발하기 위해서 노력했고, 오류가 있었지만 마지막엔 기능 구현까지 잘 -되어서 보람을 느꼈다. - 보안에 대해 생각해볼 기회가 많아 배운점이 많다고 생각한다. - 팀작업인 만큼 팀에 ..

TIL 2024.12.09

내일배움캠프 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