Project
-
Authentication 최종 정리Project/트윗 클론코딩 2023. 10. 2. 19:23
authentication에 관한 부분을 router, controller, data 부분으로 나눠서 정리했다. validation에서 중복적으로 쓰이는 코드를 하나로 빼서 재사용성을 높였고 authentication을 검증하는 미들웨어를 만들어서 tweet에 관한 동작들을 인증된 사용자가 아니면 제한하게끔 만들었다. 라우터 > 컨트롤러 > 데이터 순서인데 라우터부터 살펴보면 validate를 다루는 2개의 변수가 있는데 하나는 로그인 할 때 사용하는 username과 pw를 검사하는 변수이다 회원가입 할 때도 사용하는 녀석들이기에 이를 그대로 받아와서 signup하는 곳에 비구조화로 가져와서 그대로 썼다. 컨트롤러에는 토큰을 생성하고 보내주는 내용이 주를 이루고 있다 bcrypt를 사용해 암호를 해시하..
-
Authentication 구축하기Project/트윗 클론코딩 2023. 9. 30. 19:27
크게 Auth에 관한 내용을 처리할 때 쿠키&세션을 활용하는 방법과 JWT를 사용하는 방법이 있다. 이 둘엔 장단점과 차이점이 있는데 이에 관한 포스팅은 전에 올린 적이 있으니 아래 글에서 확인하면 좋을 것같다. 우리 트윗 클론코딩은 브라우저만 상대하는 게 아닌 여러 클라이언트를 상대하는 RESTful API를 사용하고 세션의 정보를 얻기 위해 하나의 db에 접속할 필요가 없고 확장성을 확보하기 위해 JWT를 사용하도록 결정했다. 요청 메소드 req res 비고 /auth/signin POST {id : text, pw : text} {jwt : jwt, username : text} / 200 /auth/signup POST {id :text, pw : text, username : text, name..
-
서버에서 Validation & Sanitization 수행하기Project/트윗 클론코딩 2023. 9. 24. 20:06
클라이언트 측에서 요청에 담긴 값을 스키마에 맞게 올바르게 담겨왔는지 검사하는 단계이다 만약 누락되거나 기준을 만족하지 못한다면 적절한 메세지를 클라이언트에 보내는 방식인데 우리가 DB와 통신하거나 서버에서 동작하는 시간단위 전부가 비용이기 때문에 적절하지 않은 데이터가 들어왔을 때 즉각적으로 처리해주는 게 좋다 클라이언트에서 validation을 통해 올바른 값을 서버에 전달하는 것도 좋지만 지금 클라이언트 측 validation은 optional한 상태이기에 서버단에서 validation을 수행하는 코드를 추가했다. 그리고 sanitization은 한국어로 번역하면 소독인데 양식은 맞게 들어왔으나 대소문자가 틀리다던지 그런 데이터들을 스키마에 맞게 적절하게 처리한 후 DB에 저장하거나 쓰는 작업을 말..
-
서버 아키텍쳐 구축하기Project/트윗 클론코딩 2023. 9. 23. 20:51
아키텍처 패턴은 레이어 패턴, 클라이언트 서버 패턴, 파이프 필터 패턴 등 여러가지가 있는데 이번 강의에서는 Model View Controller 패턴을 서버에 응용해서 적용했다 Model = Data, View = Route, Controller는 그대로 Controller로 응용하여 적용했다. 먼저 Model 부분이다 let tweets = [ { id: 1, username: "bob", name: "Bob", text: "hello", createTime: "2023-01-01 13:11:10", }, { id: 2, username: "jack", name: "Jack", text: "hey~! nice to meet you!", createTime: "2023-01-01 13:11:10", ..