커스텀 데코레이터
이렇게 하면 req.user 말고 바로 user라는 파라미터에 정보가 담겨 오는데, 일단 천천히 살펴보자.
- 우리가 원하는 대로 데코레이터의 동작을 정의하는걸 "커스텀 데코레이터" 라고 한다.
- 역할에 맞게 커스텀 데코레이터 를 사용해서 확장성과 편의성을 극대화 한다.
- 유저를 식별하는 데코레이터를 만듬으로 사용자 정보를 추출하고, 이걸 라우트 핸들러에 전달하는 작업을 수행할 수 있다.
- 사용자 역할을 기반으로 특정 엔드포인트에 대한 접근을 제어할 수 있다.
- data _ 데코레이터의 인자로 전달될 수 있는 데이터
- ctx _ 현재 요청의 ExecutionContext . 즉 네스트.js의 실행 컨텍스트를 말하며 현재 요청과 관련된 모든 정보를 포함한다.
커스텀데코레이터 만들기
export const GetUser = createParamDecorator(
(data, ctx: ExecutionContext): User => {
//User 엔티티로 타입을 정의
const req = ctx.switchToHttp().getRequest();
if (req.user) {
return req.user;
}
return null;
},
);
만든 커스텀 데코레이터 적용하기
@Post('/test')
@UseGuards(AuthGuard())
test(@GetUser() user: User) {
console.log('user', user);
}
'TIL' 카테고리의 다른 글
23/12/26 TIL __ typeOrm 에서 트랜젝션 처리하기 (1) | 2023.12.26 |
---|---|
23/12/25 TIL __ nestJs 에서 RolesGuard (0) | 2023.12.25 |
23/12/23 TIL __ typeORM 연결 에러 (1) | 2023.12.23 |
23/12/22 TIL __ nest js 강의 정리. (2) | 2023.12.22 |
23/12/21 TIL __ nest js (0) | 2023.12.21 |