본문 바로가기

전체 글127

[TIL] 편메추 프로젝트 마무리 및 회고 📌 프로젝트를 마무리 뉴스피드 팀프로젝트가 오늘로써 끝이 났다. 아쉬움이 많았지만, 많은 것을 공부 할 수 있었고 결과도 좋아서 나름 괜찮았던 프로젝트였다. 🥳펜메추 깃허브 📹 시연 영상 📌 회고 및 느낀점 프로젝트를 끝내고 가장 먼저 느낀것은 '공부해야하는 것이 끝도 없구나'라는 생각이었다. 필수 구현 API는 나름 빠르게 진행되었지만, 여러 유효성 검사와 이래 저래 변동되는 스키마 등 많은 이유로 시간이 조금 지체되었다. 또한 혼자 작업하는 것이 아니기에 변동 사항에 대해서 소통이 잘 이루어져야했는데 그 부분에서 정말 미흡했던것 같다. 하지만 과정 중에 팀원들의 많은 피드백과 요청들과 항상 퇴실 전에 회의를 통해 더욱 소통할 수 있게 시간을 만들어서 조금씩 좋은 방향으로 흘러가게 되었다. 내가 구현한.. 2024. 2. 15.
[TIL] bcrypt.hash와 bcrypt.compare 🧐 bcrypt.hash 우리가 기본적인 회원 가입을 진행할때, 비빌 번호와 같은 정보는 민감하기 때문에 유출에 더욱 신경을 써야한다. 혹여나, 유출이 되었더라도 비밀 번호를 해독하지 못하는 형태로 변형 시켜 데이터베이스에 저장해 주어야 한다. 이러한 작업을 해싱이라하는데, 특정 알고리즘을 통해 인간이 해독하지 못하는 문자열로 만들어주는 작업이다. 해싱은 특징은, 단방향이다. 원래대로 다시 되돌리는 것이 불가능하다. 어떠한 특정한 문자열을 해쉬 문자열로 변형은 가능하지만, 해쉬 문자열을 특정 문자열로 되돌리는 것은 불가능하다 동일한 값에 동일한 출력값을 가진다. 어떠한 특정 문자열을 계속 여러번 해쉬를 해봐도 동일한 값을 출력한다. . 특정 문자열이 조금만 바뀌어도 전혀 다른 값의 결과를 출력한다. 특정.. 2024. 2. 15.
[TIL] prisma schema ondelete의 noaction, cascade차이 프로젝트를 진행하다가 유저의 회원 탈퇴 기능에서 회원이 탈퇴되면 유저가 작성한 게시글도 다 사라지게 하려했는데 그 과정에서 에러가 발생하였다. 결론적으로 발생한 이유는 prisma schema에서 onDelete속성을 noAction으로 설정해 놓았다. noAction은 부모의 테이블을 삭제 하려고 할때, 자식 테이블이 남아있으면 삭제 할 수 없다. 그러므로 자식 테이블이 모두 사라져야 부모 테이블을 삭제 할 수 있고, Cascade는 부모가 삭제되면 자식의 테이블은 함께 삭제되는 기능이다. onDelete속성을 Cascade로 바꾸니 잘 해결되었다. 2024. 2. 14.
[TIL] 편메추 프로젝트 시작 팀 프로젝트가 시작되었다. 백엔드로 첫 팀 프로젝트이다. 개인 과제와는 다르게 많은 API를 작성해야하고 API도 하나하나 구현하는 것이 아니라 나누어서 구현하기 때문에 현업 과정에서 소통이 가장 중요할 것이다. 우리는 편의점 메뉴를 추천해주고, 같이 먹으면 좋을 조합까지 추천해주는 편의점 메뉴 추천 사이트를 제작하려한다. 개인의 취향을 담은 편의점 조합을 게시글로 올리고 좋아요를 통해 공감을 얻을 수 있다. 또한 다른 유저들은 별점을 통해 평가할 수 있다. 기술 스택으로는 express.js, MySql, Prisma, yarn, git, github를 사용하여 작업하기로 했다. 기본적으로 사용할 테이블의 개수는 5개이지만 나중에 수정되고 삭제 될 수 있다. 편메추 ERD pyeonmechu | Dra.. 2024. 2. 8.
[TIL] express-session 🧐 Express-Session express-session은 express.js에서 세션(Session)기능을 쉽게 구현하기 위한 미들웨어이다. 세션(session)을 사용하기 위해서는 사용자 인증과 세션 스토리지를 통해 사용자 정보를 저장하고, 세션 정보가 담긴 쿠키를 사용자에게 발급하는 과정이 필요했는데, express-session은 이러한 복잡한 과정을 생략하여 간단하게 세션 기능을 구현할 수 있도록한다. express-session은 세션 ID를 클라이언트에게 발급하고, 이 세션 ID를 통해 서버는 클라이언트의 상태를 추척할 수 있다. 즉, 세션ID를 발급받은 후에는 모든 서버 요청마다 세션 ID가 포함된 쿠키를 전달하게 되며, 이로 인해 서버는 클라이언트를 쉽게 식별할 수 있게 된다. 설치 .. 2024. 2. 6.
[TIL] Access Token & Refresh Token 🧐 Access Token Access Token은 사용자의 인증이 완료된 후 해당 사용자를 인증하는 용도로 발급하는 토큰이다. 쿠키(Cookie)에 JWT를 설정하고 지정된 만료 시간이 지나면 인증이 만료되는 구조 또한 Access Token이라고 부를 수 있다. Access Token은 Stateless(무상태) 즉, Node.js서버가 재시작되더라도 동일하게 작동한다. JWT를 이용해서 사용자 인증 여부는 확인 할 수 있지만, 처음 토큰을 발급한 사용자가 그 사용자인지는 확인 할 수 없다. 즉, 처음 토큰을 발급한 사람의 JWT가 누군가의 의해 탈취당해도 탈취당한 토큰인지 알 수 없다. 그러므로 개발자는 Access Token의 만료기간을 짧게 설정하여 이러한 피해를 대비할 수 있어야한다. 🧐 Re.. 2024. 2. 2.