-
swagger-node에서 express-session 설정 & 사용하기NodeJS 2020. 7. 13. 22:49728x90
swagger-node에서 express-session 설정 & 사용하기
기본적으로 swagger-node는 express를 기반으로 동작합니다.
swagger-node는 API 용으로 이용하기 때문에 기본적으로 session을 발행하지 않습니다.
다만 필요에 따라 로그인 프로세스 구현을 하게 될 경우 다음 라이브러리를 이용해야 합니다.
app.js 코드에 다음과 같이 설정을 하면 세션을 이용할수 있습니다.
express 4.X 부터는 body-parser를 사용하지 않고 express에서 제공되는 것을 이용합니다.
또한 app.use(express.urlencoded({ extended: true })); 을 사용하면 fileupload 처리를 이전과 같이 사용할 수 없습니다. 아래 multer를 이용한 예제를 참고 하셔요.app.use( require("express-session")({ secret: "keyboard cat", cookie: { maxAge: 1000 * 60 * 60 , // 1 hour }, resave: false, saveUninitialized: false, }) ); app.use(express.urlencoded({ extended: true })); app.use(express.json());
추가로 session 관리를 passport를 이용해서 쉽게 관리 할수 있습니다.
다음 예제는 SSO의 방식중 하나인 SAML으로 처리한 예제를 준비 하였습니다.
주요점은 passport는 express-session에서만 동작 하기 때문에 세션 설정을 잘해야 합니다.
Multer를 이용한 첨부 파일 uploade
app.use(express.urlencoded({ extended: true }));를 설정하면, formData를 바로 접근하지 못하게 됩니다. 이때 다음 샘플을 기준으로 첨부파일을 처리 할 수 있습니다.
// multer 설정 const multer = require("multer"); const storage = multer.diskStorage({ // upload path destination: function (req, file, cb) { cb(null, "tempfiles"); }, // 업로드된 파일 이름 filename: function (req, file, cb) { cb(null, `${moment().format("YYYYMMDDHHmmssSSS")}${file.originalname}`); }, }); const upload = multer({ storage: storage, limits: { fileSize: 10 * 1024 * 1024 }, }); ... 설정 처리 SwaggerExpress.create(config, function (err, swaggerExpress) { if (err) { throw err; } // swagger-node에서 미들웨어 처리 방법 app.use( "/jira/attachments/upload", upload.single("filepond"), async (req, res, next) => { try { const file = req.file; res.status(201).json({ status: "OK", file_nm: file.originalname.normalize("NFC"), file_path: file.filename, }); } catch (e) { logger.error(e); res.status(400).json({ status: "ERROR", message: e }); } } ); });
주요 코드만 표기 하였습니다.
예제 코드 바로 보기의 app.js를 참고 하면 전체 코드를 작성하실수 있습니다.참고 자료
728x90'NodeJS' 카테고리의 다른 글
Sequelize에서 날짜에 대한 타임존 처리 하기 (0) 2020.07.15 Nodejs에서 Typescript 사용해보기! (0) 2020.07.14 nodeJs] 첨부 파일를 다른 서버로 전달하기 (0) 2020.07.11 PM2 save / startup을 해두어도, reboot 시 실행되지 않을시 처리 방안 (0) 2020.06.12 swagger-node + mongoose 예제 (0) 2020.06.09