본문 바로가기
반응형

Archive188

DB의 시간차이 문제 db에서는 현재시간을 가져오는 방법이 두가지가있다. 1. now() 2. CURRENT_TIMESTAMP 두가지의 차이는 CURRENT_TIMESTAMP 는 설정된 시스템변수 timezone에 영향을 받으면서 변한다는 점이다. set time_zone='Asia/Seoul'; select @@time_zone; 그래서 TIMESTAMP를 사용하는 것이 다른 나라에서의 시간차를 적용시키기 때문에 적절한 것 같다. 만약 시간이 9시간차이가 난다면 위 쿼리문을 실행해서 타임존을 한국으로 바꾸면된다. 2022. 8. 1.
Passport 와 JWT 인증 & Custom Decorator 보통서버는 인증된 사용자에게만 리소스를 제공한다. 사용자를 검증하는 방법에는 cookie와 session, 혹은 JWT와 같은 토큰, Oauth 와 같은 써드파티의 인증서비스를 이용한다. node 생태계에서는 passport라는 인증모듈이 검증되고, 써드파티와의 연동도 손쉽게 제공한다. 또 nest에서는 passport를 Gards에 위임하여 전체 서비스에서 활용할 수 있다. 인증 절차 흐름 auth/login -> passport에서 DB의 유저 조회 -> Request.user에 유저정보 추가됨 -> 그정보를 가지고 JWT 생성 후 반환. 사용자는 토큰을 header에 담아서 서버 API 사용 -> 사용전에 JWT Guards 가 토큰 검증 -> 검증되면 API로 패싱, 아니면 거절 npm insta.. 2022. 8. 1.
Cookie & Session 이전 포스팅까지 커스텀 쿠키 테코레이터를 사용해서, 쿠키를 읽는법과 express Res 객체를 꺼내어서 브라우저에 쿠키를 전달하는 법을 정리했다. 하지만 쿠키는 브라우저에 저장됨으로, 여러 보안적인 위험에 노출되어있어서, 정보를 그대로 저장하기에는 위험하다. 그래서 세션이 함께쓰이면서, 중요한 정보는 세션에 저장하고, 쿠키에는 세션ID를 저장한다. 설치 및 설정 npm i express-session npm i -D @types/express-session app.use( session({ secret: 'kong-secret', resave: false, // 세션의 변경사항이 없어도 새로 저장하는 옵션 saveUninitialized: false, //초기화 하지 않은 세션을 저장하는 옵션 }), .. 2022. 8. 1.
CORS 와 Cookie CORS 너무간단하게 main.ts 한줄만 추가해주면된다. async function bootstrap() { const app = await NestFactory.create(AppModule); app.enableCors(); // 추가 및 config app.setBaseViewsDir(join(__dirname, '..', 'views')); app.setViewEngine('html'); await app.listen(3030); } bootstrap(); 하지만 쿠키를 사용하기 위해서는 wileCard가 안된다는 점과, credential header를 추가해주어야한다. app.enableCors({ origin: 'http://localhost:3000', credentials: true, .. 2022. 7. 31.
static 파일제공 & View Engine & React 서버와 클라이언트를 제공하는 방법에는 크게 두가지가 있다. 1. 서버 자체에서 static 제공 2. 클라이언트와 서버 별도 호스팅 CRA의 경우엔 별도호스팅은 cors를 비롯한 보안설정을 해주어야하지만, 1번의 경우는 그런문제가 없다는 장점이 있다.(하지만 난 분리를 선호한다) 함께 호스팅하면 둘중 하나를 업데이트하면 불안해지고, 부하라고하면 서버에 부하가 커지기도 하기 때문이다. 하지만 템플릿 엔진을 사용해서, 간단한 SSR로 이용하기는 유용하다. npm install --save @nestjs/serve-static @Module({ imports: [ TypeOrmModule.forRoot({ type: 'mysql', host: 'localhost', port: 3306, username: 'r.. 2022. 7. 31.
TypeORM 과 API 그동안 express로 서버개발을 꽤많이 해왔고, 다른 커뮤니티를 찾아보지 않아도 느꼈던, express의 자유도는 오히려 장기적으로, 엔터프라이즈 용으로는 분리한 점이 느껴졌다. 중간중간 Nest의 핵심 개념과 기능들을 정리해 보고자 한다. 공식문서 TypeORM - Amazing ORM for TypeScript and JavaScript (ES7, ES6, ES5). Supports MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, typeorm.io 공식문서는 아니지만, 검색시 노출이 많이되는 꽤 괜찬은 문서 README_ko - typeorm 이 예시에서는 MySQL을 사용하고 있지만 지원되는 다른 데이터베이스를 사용할 수도 있다. 다른 데이터 베이스를 .. 2022. 7. 31.
반응형