back-end
-
[Nest.js, Guard, Save request] Guard를 활용한 엔드포인트 보호Back-end 2021. 12. 13. 15:55
안녕하세요! 오늘은 프로젝트에서 허용되지 않은 접근에 대한 자원 request를 막을 수 있는 nest.js guard에 대해서 알아보도록 하겠습니다! 로그인을 한 유저만 엔드포인트에서 자원을 요청할 수 있는 작업을 해야할 때 우리는 이 nest.js의 guard를 사용할 수 있습니다. 미들웨어로도 처리해도 충분하지 않나요? 가드와 미들웨어의 차이는 실행 시기에 있습니다. 우선 미들웨어는 next() 함수를 호출한 후 어떠한 핸들러가 실행될 지 알 수 없습니다. 반면 가드는 ExecutionContext 인스턴스에 액세스할 수 있으므로 다음에 실행될 작업을 정확히 알고 있습니다. request와 response의 정확한 지점에 우리는 이 Guard를 삽입하여, 요청에 대한 거부, 혹은 승인을 할 수 있는..
-
[Authentication, Nest.js, JWT] Nest.js에서 JWT 동적모듈,미들웨어 구현해보기Back-end 2021. 12. 12. 21:40
안녕하세요! 오늘은 더 나은 사람들 서비스의 로그인 부분 진행 중 nest.js 환경에서 JWT를 이용해 로그인을 구현하고 있었습니다. 🐤 다들 로그인 인증 부분을 어떻게 처리하시나요? 👀 nest.js의 강력한 인증라이브러리인 passport가 있지만, JWT 동적 모듈을 따로 구현하여 컨셉도 다시 익히고 개념 정리도 하면서 포스팅을 할려고 합니다. 구현 방향은 다음과 같습니다. 프로젝트 내 구현 프로세스 1. 로그인 시 JwtService의 signToken 함수로 praviate key와 함께 토큰을 사인 (JSON 안의 내용은 다음과 같습니다.) const token = this.jwtService.signToken({ id: (await user).id, nickname: (await user)..
-
[Nest.js, TypeORM] RepositoryNotFoundError에러와 마주할 때 2021. 12. 11. 20:06
Nest.js 환경에서 서비스 개발 도중 만난 에러입니다. 새로운 모듈에서 데이터베이스 Entity를 생성하던 도중 에러가 발생하였는데, 결론부터 말하자면 app.module.ts에 존재하는 TypeOrmModule에 엔티티를 inject하지 않아서 발생한 에러였습니다. 에러 내용을 살펴보면, 현재 ImageContainer Entitiy가 등록되지 않은 것 같다는 에러를 보입니다. TypeORM은 app.modules.ts의 루트 모듈에 엔티티를 등록을 해줘야하는데 이 것을 하지 않아 발생하는 에러였습니다. TypeOrmModule.forRoot({ type: 'postgres', host: process.env.DB_HOST, port: +process.env.DB_PORT, username: pro..