express-session
- 세션 관리용 미들웨어
- req.session을 통해 접근
※ 세션ID는 req.sessionID를 통해 조회 가능
- 세션 관리 시 클라이언트에 session-cookie를 보냄
※ 세션 설정은 라우터 호출 이전에 입력해야 적용됨 (그렇지 않으면 session = undefined)
속성
- secure = https에서만 세션을 주고받을지 설정
- secret = 암호화 키 설정
- resave = 세션을 항상 저장할지 설정
- saveUninitialized = 세션에 저장할 내역이 없어도 처음부터 세션을 생성할지 설정
- cookie = 세션 쿠키 설정
- name = 세션 쿠키명 설정
const express = require("express");
const app = express();
const session = require("express-session");
app.use(cookieParser(process.env.COOKIE_SECRET);
app.use(session({
secure: ture, // https 환경에서만 session 정보를 주고 받도록 설정
secret: process.env.COOKIE_SECRET, // 암호화에 사용되는 키
resave: false, // 세션을 항상 저장할지
saveUninitialized: true, // 세션에 저장할 내역이 없더라도 처음부터 세션을 생성할지
name: 'session-cookie', // 세션 쿠키명 지정 (기본값 = connect.sid)
cookie: { // 세션 쿠키 설정
httpOnly: true, // 자바스크립트를 통해 세션 쿠키를 사용할 수 없도록 함
Secure: true,
maxAge: 5 * 60 * 1000 // 쿠키 만료 기간 설정 (밀리초 단위, 5 * 60 * 1000 => 5분)
}
}));
app.get('/', (req, res, next) => {
// 세션에 데이터를 설정하면 요청 받은 고유한 세션 사용자의 값만 설정됨 (개인 저장 공간)
req.session.id = "hello"; // 세션 ID 설정
}
라우터
- 요청 URL에 따라 지정한 미들웨어를 실행시켜주는 프로그램 (미들웨어 = 라우터의 함수)
- 클라이언트의 요청 경로(path)를 보고 이 요청을 처리할 수 있는 곳으로 기능을 전달해주는 역할
- routes 폴더에 라우터로 사용할 파일을 저장
- module.exports = router를 해야 다른 파일에서도 해당 파일의 라우터 사용 가능
// routes/index.js
const express = require('express');
const router = express.Router();
router.get('/in', (req, res) => {
res.send('Hello, World !');
});
module.exports = router;
// routes/user.js
const express = require('express');
const router = express.Router();
router.get('/iam', (req, res) => {
res.send('Hello, User');
});
module.exports = router;
// /app.js
const indexRouter = require('./routes/index.js');
const userRouter = require('./routes/user.js');
app.use('/', indexRouter);
app.use('/user', userRouter);
// indexRouter => /in의 라우터, userRouter => /user/iam의 라우터 (Get 방식)
- 같은 경로로 지정되는 라우터의 경우에는 하나로 합쳐서 처리가능
// /abc로 GET&POST
router.route('/abc')
.get((req,res) => {
res.send('GET /abc');
})
.post((req, res) => {
res.send('POST /abc');
});'블록체인 기술사업 교육 > Node.js' 카테고리의 다른 글
| 블록체인 기술사업 교육 35일차 (0) | 2023.05.23 |
|---|---|
| 블록체인 기술사업 교육 29일차 (0) | 2023.05.15 |
| 블록체인 기술사업 교육 25&26일차 (0) | 2023.05.09 |
| 블록체인 기술사업 교육 16일차 (0) | 2023.04.24 |
| 블록체인 기술사업 교육 15일차 (0) | 2023.04.21 |
댓글