AccessTokenGuard, RefreshTokenGuard를 쓰는 모든 모듈에 AuthModule과 UserModule을 import 해줘야하나요?
211
작성한 질문수 4
AuthModule과 UserModule을 PostModule에 추가하면 Dependency 에러가 해결되는 것은 이해가 됐습니다.
다른 질문이 생겼는데요.
그러면 해당 Guard를 사용하는 모든 Module에 해당 Guard가 DI 받아서 사용하는 (여기서는 AuthService와 UserService) 모듈 (AuthModule, UserModule)을 import 해주어야 하는 건가요?
만약 AccessTokenGuard 를 모든 controller에서 사용한다면, 모든 모듈에 AuthModule, UserModule을 import 해주어야 하는 걸까요?
그리고 만약 Guard에 DI 가 새로 추가된다면, (예를 들면 NewModule의 NewService를 Guard가 필요로 한다면)
다시 원래 Guard가 사용되고 있던 모듈들 전부에 NewModule을 import 해줘야하는 걸까요?
제가 이해한게 맞다면, 의존성 측면에서 매우 좋지 않은 것 같아, 의문이 생겨 문의드립니다.
답변 2
0
안녕하세요!
당연히 모두 임포트 해줘야합니다.
만약에 의존성을 한번에 묶고싶다면 모듈을 생성해서 관련 의존성들을 한번에 배포 해주시면 됩니다.
이렇게하면 두번째 질문하신 부분이 해결됩니다.
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. Tempsh님 질문 감사합니다.
NestJS에서 Guard를 사용하면서 의존성 문제에 대해 고민이 많으셨을 것 같습니다. 의존성 관리를 올바르게 하려면 어떻게 해야 할지 궁금하신 점, 아주 좋은 질문입니다.
Guard의 의존성 문제를 해결하기 위해 모든 컨트롤러의 모듈에 AuthModule과 UserModule을 일일이 import하는 것은 지금 말씀하신 대로 비효율적이고 유지보수에 좋지 않은 방법일 수 있습니다.
해결 방안
공유 모듈: 공통적인 Guard(s)와 서비스(s)를 묶어서 하나의 모듈로 추출할 수 있습니다. 이렇게 하면, 필요한 모듈만 import하면 되기 때문에 import 중복을 줄일 수 있습니다. 이를 통해 Guard가 필요로 하는 모든 의존성을 중앙 집중화하여 관리할 수 있습니다.
전역 모듈 사용: 일부 경우, 전역 모듈을 사용하여 문제를 해결할 수도 있습니다. 이 방식을 통해 한 번의 설정으로 모든 모듈에서 Guard를 사용할 수 있게 됩니다. 하지만 전역 모듈 사용은 장단점이 있어서 사용에 신중해야 합니다.
Custom Provider 사용: 의존성을 컴포지션한 커스텀 Provider를 정의하고, 이를 통해 주입할 수 있습니다. 이를 통해 Guard 내부에서 필요한 모든 의존성을 간편하게 주입받을 수 있습니다.
이 방법들은 프로젝트의 구조와 규모에 따라 적절히 선택되어야 하며, 의존성을 효율적으로 관리하는 데 도움을 줄 수 있습니다.
관련된 질문과 해결 방법들은 아래 링크에서도 확인하실 수 있습니다:
- 포스트 컨트롤러에서 UseGuard를 추가하면 디펜던시 에러가 나타납니다. - Dependency 문제와 해결에 대한 사례를 확인해 보세요.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
cascade 질문
0
44
1
@types/bcrypt 설치과정이 누락된것같습니다.
0
53
1
process.env port key 에러
0
51
1
추상화
0
52
1
[공유] DTO optional 필드가 undefined로 잡혀 TypeORM 조건이 깨지는 현상
0
105
2
where 키워드가 들어가는 메서드와 아닌 메서드
0
57
1
BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유?
0
74
1
app.controller app.service 는 지워도되나요?
0
70
1
@JoinColumn을 쓰는 경우와 안쓰는 경우의 차이
0
81
1
포트 3000에서 listen하는 곳까지 넘어가지 않습니다.
0
69
1
PickType 사용 시 `as const`를 꼭 사용해야 하나요?
0
105
2
socket connect 오류
0
101
2
강의를 들으면서 궁금한 점
0
100
2
DELETE 요청의 반환값은 어떤 기준으로 결정하는 게 좋을까요?
0
64
2
커리큘럼 질문
0
101
2
put 요청은 언제
0
92
3
typeorm VS prisma
0
355
2
142 강의 > 4:00 > 포스트멘 활용 관련 질문 드립니다.
0
79
2
User 데코레이터 버그 수정 전달드립니다.
0
70
1
git 주소 부탁드립니다.
0
115
2
nest g resource 명령어 에러
0
99
2
로그인 엔드포인트 관련 질문
0
86
2
yarn으로 express 다운 후 node 2_server.js 실행 안되는 경우
0
150
3
"흔히 사용되는 메서드" 강의 관련 질문입니다~
0
95
2





