해당 포스팅은 nest.js 9.0.0 버전, typeorm 0.3.x 버전을 기준으로 작성되었습니다.
모든 글은 작성자의 주관이 100% 담겨있기 때문에 부정확할 수 있습니다.
#pre. 터미널을 켜고 프로젝트 폴더로 이동
위의 링크의 내용을 참고하여 study 폴더로 이동해줍니다.
그리고 code . 명령어를 통해 vscode를 열어줍니다.
이전 포스팅에서 로그인에 대해서 배웠습니다.
로그인을 확인할 때, 해당 user에 있는 userId를 Guard가 자동으로 req.user로 할당해줍니다.
이번 포스팅에서는 이를 조금더 편하게 사용하기 위해 User 데코레이터를 만들어 보겠습니다.
먼저, src폴더 안에 decorators폴더를 만들어 줍시다.
그리고 user.decorator.ts 파일을 만들어 줍시다.
사진
그리고 user.decorator.ts 파일에 다음과 같이 코드를 작성해 줍시다.
import { ExecutionContext, createParamDecorator } from '@nestjs/common';
export const User = createParamDecorator(
(data: unknown, ctx: ExecutionContext) => {
const request = ctx.switchToHttp().getRequest();
return request.user;
},
);
createParamDecorator를 사용해서 함수의 파라미터에서 사용하는 데코레이터를 생성합니다.
ctx.switchToHttp().getRequest() 함수를 통해서 request를 받아오고
request.user를 리턴해주면 완성입니다!
사용할 때는 다음과 같이 사용할 수 있습니다.
@UseGuards(LoggedInGuard)
@Get()
async getUserInfo(@User() user) {
return user;
}
UseGuards로 로그인이 되어있는지 확인했다면, User데코레이터를 사용하여 user정보를 가져올 수 있게 됩니다.
이제, 이것을 이용하여 로그인이 필요한 서비스에서 userId를 뽑아서 사용할 수 있습니다!
'Back-end > 기초부터 따라하는 nest.js' 카테고리의 다른 글
#11-1. 기초부터 따라하는 Nest.js : Comment CRUD (0) | 2023.05.15 |
---|---|
#11. 기초부터 따라하는 Nest.js : Article CRUD (6) | 2023.05.11 |
#10. 기초부터 따라하는 Nest.js : JWT 로그인 구현과 Guard(2) - 실전편 (17) | 2023.04.18 |
#9. 기초부터 따라하는 Nest.js : 로그인의 원리와 Guard(1) - 개념편 (0) | 2023.04.17 |
#8. 기초부터 따라하는 Nest.js : TypeORM을 이용한 간단한 API작성 (6) | 2023.04.17 |