๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[Nest JS ๋ก CRUD ๊ฒ์ํ ๋ง๋ค๊ธฐ] (29) ์ปค์คํ ๋ฐ์ฝ๋ ์ดํฐ ์์ฑํ๊ธฐ ๋ณธ๋ฌธ
๐ฉ๐ป ๋ฐฑ์๋(Back-End)/Nest js
[Nest JS ๋ก CRUD ๊ฒ์ํ ๋ง๋ค๊ธฐ] (29) ์ปค์คํ ๋ฐ์ฝ๋ ์ดํฐ ์์ฑํ๊ธฐ
์ง์ง์ํ์นด 2023. 6. 9. 11:16728x90
๋ฐ์ํ
<๋ณธ ๋ธ๋ก๊ทธ๋ John Ahn ์ ์ ํ๋ธ๋ฅผ ์ฐธ๊ณ ํด์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ์์ต๋๋ค :-)>
=> ๋ฐ๋ผํ๋ฉด์ ๋ฐฐ์ฐ๋ NestJS
๐งธ ์ปค์คํ ๋ฐ์ฝ๋ ์ดํฐ ์์ฑํ๊ธฐ
๐ get-decorator.ts
import { ExecutionContext, createParamDecorator } from "@nestjs/common";
import { User } from "./user.entity";
// ์ปค์คํ
๋ฐ์ฝ๋ ์ดํฐ ์์ฑํจ
// req.user ๊ฐ ์๋ user ํ๋ผ๋งํฐ๋ก ๋ฐ๋ก ์ ์ ๊ฐ์ฒด ๊ฐ๊ณ ์ค๊ธฐ
export const GetUser = createParamDecorator((data, ctx: ExecutionContext): User => {
const req = ctx.switchToHttp().getRequest();
return req.user;
})
๐ auth.controller.ts
import { Body, Controller, Post, Req, UseGuards, ValidationPipe } from '@nestjs/common';
import { AuthService } from './auth.service';
import { AuthCredentialsDto } from './dto/auth-credential.dto';
import { AuthGuard } from '@nestjs/passport';
import { GetUser } from './get-decorator';
import { User } from './user.entity';
@Controller('auth')
export class AuthController {
constructor( private authService: AuthService) {}
// localhost:3000/auth/signUp
@Post("/signup")
// ValidationPipe : ์์ฒญ์ด ์ปจํธ๋กค๋ฌ์ ์๋ ํธ๋ค๋ฌ๋ก ๋ค์ด์์ ๋ Dto ์ ์๋ ์ ํจ์ฑ ์กฐ๊ฑด์ ๋ง๊ฒ ์ฒดํฌ
signUp(@Body(ValidationPipe) authCredentialsDto: AuthCredentialsDto): Promise<void> {
return this.authService.signUp(authCredentialsDto);
}
// ๋ก๊ทธ์ธ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
@Post("/signin")
signIn(@Body(ValidationPipe) authCredentialsDto: AuthCredentialsDto): Promise<{accessToken: string}> {
return this.authService.signIn(authCredentialsDto);
}
// TEST
@Post("/authTest")
// ์ธ์ฆ ๋ฏธ๋ค์จ์ด
// ์ง์ ๋ ๊ฒฝ๋ก๋ก ํต๊ณผํ ์ ์๋ ์ฌ๋๊ณผ ํ์ฉํ์ง ์๋ ์ฌ๋์ ์๋ฒ์ ์๋ ค์ค
@UseGuards(AuthGuard())
test(@GetUser() user: User) {
console.log("user", user);
}
}
728x90
๋ฐ์ํ
'๐ฉโ๐ป ๋ฐฑ์๋(Back-End) > Nest js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Comments