auth 옵션에서 type을 bearer token으로 맞추고 로그인 시 전달 받은 토큰을 직접 입력해서 할 수 있다. 비슷한 작업은 header의 authorization에서도 가능하다.
catch한 에러는 (미들웨어 폴더에 작성한) error handler로 넘어갈 것이다. 고민해볼 점은 응답으로 전달되는 status가 현재 400으로 고정돼있는데, 이를 각 상태에 맞는 메세지가 전달되도록 조정하는 것이다.
라이브러리가 있지만, 현업에서는 튜닝이 어려워서 쓰지 않으므로 admin 페이지를 별도로 만드는 것을 추천한다.
권한에 있어서, 토큰 개념을 더 자세히 알 필요가 있다. 예를 들어, 하나의 유저 모델에서 토큰으로 전달되는 정보에 따라 관리자/사용자를 구분할 수 있다. 그렇게 된다면 넘겨주는 토큰에 따라서 보여주는 페이지를 조절할 수 있다. 이 때, 하나의 html에서 admin 페이지/사용자 페이지를 조건부로 보여주는 것도 기술적으로는 가능하지만, 결국 관리자 관련 정보가 프론트엔드까지 전달되는 것이므로 보안상 위험하다.
로그인해야지만 담을 수 있는 기능의 장바구니라면 이야기가 다르지만, 로그인하지 않아도 이용할 수 있는 장바구니라면 굳이 db에 저장할 필요가 있을까? 위 관계들 중 유저 : 상품을 이야기해 보자면, populate말고 객체를 가져올 수 있는 다른 기능이 있는데 이를 찾아보고 제공하는 서비스에 어떤 기능이 더 적합한지 고민해 볼 필요가 있다.
현재 하는 프로젝트는 엄밀히 말하면 SSR의 일부를 프론트엔드에서 맡는 것이다. CSR라면 backend와 frontend가 같은 repository 안에 있지 않을 것이다.
API 작성도 중요하지만, 그 전에 commit 컨벤션, git flow, ESlint/Prettier 등 협업을 위한 기본기가 더 중요하다. 간단하게 정리하자면
commit 컨벤션:
commit 메세지를 자세하게 적어줄 것. 메세지 구조 등 고려해야 할 것이 많다. https://overcome-the-limits.tistory.com/6?category=923736 참조git플로우:
git은 간단하게 분산 버전 관리 시스템이다. master, develop, feature 등이 나뉘어 있는 것도 중요하지만, 이들이 commit 시점에 따라 관리하는 ‘버전’이 다르다는 점을 더 주목해 보자. https://overcome-the-limits.tistory.com/7?category=923736 참조ESLint/Prettier
Lint를 컨벤션 검열 라이브러리라고 요약할 수 있다면 Prettier는 검열된 부분을 자동으로 변경해주는 기능까지 있다. https://overcome-the-limits.tistory.com/4?category=923736 참조