창작에 관련된 질문이나 간단한 팁, 예제를 올리는 곳
문제:
logout.js
router.get('/', (req, res) => {
req.session.destroy();
res.redirect('/login');
});
login.js
if (result[0] !== undefined) {
// 로그인에 성공하였으므로 세션을 할당
req.session.uid = result[0].uid;
req.session.username = result[0].username;
req.session.is_admin = result[0].is_admin;
res.redirect('/main');
}
위와 같은 코드가 있을 때 가끔씩 로그인을 했는데도 세션이 제대로 반영되지 않아 로그인 후 로그인 페이지가 표시되어 새로고침을 해야 하거나, 로그아웃 버튼을 두 번 눌러야 로그아웃 되는 문제가 발생함.
해결:
logout.js
router.get('/', (req, res) => {
req.session.destroy(err => {
if (err) throw err;
res.redirect('/login');
});
});
리다이렉트 하는 처리를 session.destroy() 내부에서 실행.
login.js
if (result[0] !== undefined) {
// 로그인에 성공하였으므로 세션을 할당
req.session.uid = result[0].uid;
req.session.username = result[0].username;
req.session.is_admin = result[0].is_admin;
req.session.save(err => {
if (err) throw err;
console.log(`Logged as ${result[0].username}`);
res.redirect('/main');
});
}
리다이렉트 하는 처리를 session.save() 내부에서 실행.