사용자가 로그인 한 동안에는 사용자가 API 요청 할 때마다 사용자의 정보를 가져와서 처리해야 할 것이다.
보통 이런 경우에는 2가지 방법 중 하나를 사용하는데, 세션혹은 쿠키를 사용한다.
우선 세션을 먼저 알아보고, 해당 강의가 끝나면 JWT를 통한 쿠키 인증 방법을 알아보자.
우선 cookie-session을 사용할 것인데, 이 라이브러리는 기존의 세션과는 다르게 세션데이터를 클라이언트의 쿠키에 저장한다고 한다.
어쩌면 쿠키라고 말하는 것이 맞을 거 같기도 하다.
이런식으로 세션을 유지한다고 한다.
우선 cookie-session 라이브러리부터 가져오자.
npm install cookie-session
npm install @types/cookie-session
그 다음에 main.ts에 cookie-session을 설정해준다.
const cookieSession = require('cookie-session');
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.useGlobalPipes(
new ValidationPipe({
whitelist: true,
})
);
app.use(cookieSession({
keys:['seungkyu']
}))
await app.listen(process.env.PORT ?? 3000);
}
bootstrap();
cookie-session은 ts가 되지 않아, 저렇게 require를 사용해야 한다고 한다.
app.use로 cookieSession을 설정해주고, key를 넣어야 한다.
이 key는 cookie에 평문 그대로 넘겨주지 않으니 약간의 암호화를 하는데, 그 때 사용하는 키다.
지금은 연습단계니 간단하게 이름으로 추가했다.
이제 간단하게 userController에 /test 핸들러를 추가해서 세션을 조작해보자.
@Get("/test/:name")
testWriteSession(@Param('name') name:string, @Session() session: any){
session.name = name;
}
@Get("/test")
testReadSession(@Session() session: any){
return session.name;
}
이렇게 데코레이터로 Session을 가져온다.
우선 간단하게 쓰고, 읽도록 만들어보았다.
이제 다음과 같은 http call을 날려보자.
그 다음 위의 http call을 날려보면
이렇게 Set-Cookie가 온 것을 볼 수 있다.
쿠키의 위조를 막기 위해 하나는 실제 쿠키, 하나는 서명값이 온다고 하고
seungkyu가 온 것이 아니라 암호화가 되어 온 것을 볼 수 있다.
그 다음 밑의 http call은
이렇게 정상적으로 다시 해독해서 온 것을 볼 수 있다.
그리고 위의 http call을 다시 날려보면
Set-Cookie가 없는 것을 볼 수 있는데, 쿠키가 같으면 굳이 nest에서 새롭게 쿠키를 굳이 업데이트 하지 않기 때문이다.
일단 간단하게 nest에서 session을 사용하는 방식을 알아보았다.
이제 이 session을 사용해 사용자의 로그인을 유지해보자.
'Node > Nest' 카테고리의 다른 글
Nest에서 환경변수로 값 가져오기 (0) | 2025.07.13 |
---|---|
Nest에서 세션으로 사용자 정보 가져오기 (0) | 2025.07.12 |
Nest에서 사용자 로그인 검사하기 (0) | 2025.07.10 |
Nest에서 비밀번호 암호화해서 보관하기 (4) | 2025.07.10 |
Nest에서 response json 커스텀하기 (0) | 2025.07.08 |