세션 관리용 미들웨어
app.use(session());
app.get('/', (req, res, next) => {
req.session.id = 'hello'
res.send('hello express11');
})
위와 같이 할 경우, 각 개인 사용자에게 session 개인의 저장공간이 생긴다. `

app.use(session({
resave: false,
saveUninitialized: false,
secret: 'mymypassword',
cookie: {
httpOnly: true,
},
name: 'connect.sid',
}
));
위 처럼 session의 여러 속성 지정 가능
console.로 req.session 찍어보면 나의 세션이 나옴
Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
name: 'kakakakak'
}
app.use((req, res, next) => {
req.session.data = "똥똥또로똥"
next();
})
app.get('/about', (req, res) => {
console.log(req.session.data)
res.send('hello express33');
});
위와 같이 시작할 때 session에 데이터를 저장해두고, get할 때 session의 데이터를 불러오면, session에 저장되어 있기 때문에 다음의 요청에도 똑같이 데이터가 남아 있음
영구적이 아닌 일회성으로 데이터를 남게 하고 싶으면 session에 저장되게 하지말고, 그냥 req에 저장하기
app.use((req, res, next) => {
req.data = "똥똥또로똥"
next();
})
app.get('/about', (req, res) => {
console.log(req.data)
res.send('hello express33');
});
그러면 요청이 끝난 후 데이터가 정리되기 때문에 안전해진다
req나 res 객체 안에 값을 넣어 데이터 전달 가능
미들웨어 안에 미들웨어를 넣는 방법
두 코드는 동일하다
app.use(morgan('dev'))
app.use((req, res, next) => {
morgan('dev')(req,res,next);
});
응용
app.use('/', (req, res, next) => {
if (req.session.id) {
express.static(__dirname + 'public)(req, res, next)
} else {
next();
}
})
위 처럼 로그인 권한 분기도 가능하다.