728x90
세션은 유저에 관한 정보를 저장한다. 그런데! 어디에 ? 서버에 저장을 한다. 따라서 보안은 좋으나 부하가 있을 수 있다!
NestJS 프레임워크의 SESSION은 express에 기반한다. NestJS 공식 문서를 확인해보자
1. 패키지 다운로드
2. 설정 : 주의 할 점은 listen 보다 위에 설정을 해야 서버에 정상적으로 설정된다.
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import * as session from 'express-session'; //세션
async function bootstrap() {
const app = await NestFactory.create(AppModule); //반환: NestApplication instance
app.use(
session({
secret: 'SESSION_ID_xx', //세션아이디
resave: false, //request 중에 세션이 수정되지 않아도 세션을 세션 저장소에 다시 저장하도록 강제
saveUninitialized: false,
}),
);
await app.listen(3000, 'localhost', () => {
console.log('app listening on port 3000');
});
}
bootstrap();
2. 코드 작성
logIn(@Body() loginInfo, @Req() req: Request, @Res() res: Response) {
//console.log(loginInfo);
try {
//세션 설정
const session: any = req.session;
session.user = loginInfo.userId; //사용자가 정의한 임의의 지정 값
session.cookie.maxAge = 1000 * 10; //만료 시간 : 10초
res.status(HttpStatus.OK).send({ session: session });
//console.log(session); undefined
this.memberService.login(loginInfo);
console.log(`${session.user} 회원님이 로그인이 하였습니다.`);
} catch (e) {
console.log(e);
}
3. 결과
만료시간을 10초로 주었기 때문에 10초가 유지가 되고 사용자가 정의한 user의 정보 값이 나온다.
728x90