티스토리 뷰
반응형
app.js
app.use(session({
secret: 'secret code',
resave: false,
saveUninitialized: false,
cookie: {
secure: false, // 이 부분이 true이면 세션 설정이 안되요
maxAge: 1000 * 60 * 60
}
}));
app.post('/api/login', async (req, res) => {
req.session['email'] = 'jypark@gmail.com';
res.send('ok');
});
app.post('/api/logout', async (req, res) => {
req.session.destory();
res.send('ok');
});
위의 상황은 각 로그인/로그아웃 시 세션이 적용해주어야 하는 값입니다. 이메일의 값은 스태틱하게 적용되어 있지만 이 부분을 dbPool에서 조회된 값으로 저장하여두 되겠죠.
또 이전에 적었던 post 요청에서 수정을 하여야 하는 부분입니다. 세션에 들어있는 이메일의 값을 검증하는 로직이 추가 되었어요.
app.post('/api/:alias', async (req, res) => {
if(!req.session.email) {
return res.status(401).send({
error: '로그인이 되지 않았어요.'
});
}
try {
res.send(await req.db(req.params.alias));
} catch(err) {
res.status(500).send({
error: err
});
}
});
만약 로그인이 필요하지 않는 소스인데도 세션 값을 검증하면 아무래도 문제가 발생할 수도 있습니다.
이런 경우는 아래와 같이 uri를 변경하여 적용하여도 됩니다.
// 로그인시에만 가능
app.post('/api/auth/:alias', async (req, res) => {
if(!req.session.email) {
return res.status(401).send({
error: '로그인이 되지 않았어요.'
});
}
try {
res.send(await req.db(req.params.alias));
} catch(err) {
res.status(500).send({
error: err
});
}
});
// 비로그인시에도 가능
app.post('/api/v1/:alias', async (req, res) => {
try {
res.send(await req.db(req.params.alias));
} catch(err) {
res.status(500).send({
error: err
});
}
});
반응형
'Server' 카테고리의 다른 글
Mybatis에서 다중 Insert문을 한번에 처리하기 (0) | 2021.04.07 |
---|---|
[Java] 줄바꿈(\n) 개행문자열 치환 방법 (0) | 2021.04.06 |
[Node.js] 구동중인 서버 소스 동기화 시키기 (0) | 2021.02.08 |
Node Express를 적용하여 통신하기 (0) | 2021.02.08 |
Node Express를 활용하여 세션이 적용된 서버 구축하기 (0) | 2021.02.08 |
[Java] 이미지를 압축해보고 변환해보자 (0) | 2021.01.21 |
댓글
공지사항