session[cookies.session] 가 두번 반복된 이유가 궁금합니다.
242
작성한 질문수 28
안녕하세요. 추석 잘 보내셨길 바랍니다.
본문의 코드 중에서
cookies.session && session[cookies.session] && session[cookies.session].expires 부분을 보다가 궁금한 점이 있어서 질문 드립니다.
무엇 때문에. session[cookies.session]를 두번 쓰고, 그 이후에 expires를 붙인 것인가요?
실제로 session[cookies.session].expires를 한번만 쓰면 에러가 납니다. 코드를 리뷰 해봐도 알 수가 없네요. 어차피 같은 값이고, 똑같이 &&을 사용 했는데도 말이죠.
아래는 질문 한 부분의 코드 입니다.
else if (cookies.session && session[cookies.session] && session[cookies.session].expires > new Date()) {
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end(`${session[cookies.session].name}님 안녕하세요`);
이하는 코드 전문입니다. ```
const http = require('http');
const fs = require('fs');
const url = require('url');
const qs = require('querystring');
const session = {};
function parseCookies(req) {
const list = {};
const cookieString = req.headers.cookie;
if (cookieString) {
console.log(cookieString)
cookieString.split(';').forEach((cookie) => {
const parts = cookie.split('='); //list 짤막하게 나눠진 리스트. for each 마다. list[parts.shift().trim()]/* list가 옵젝이니, [] 형태로 key 값을 주는 거다. = 다음은 value */ = decodeURI(parts.join('='));
}); //이말은 뭐냐. 처음의 것만 key 값으로 빼고, 그다음 것들은 a=1 식으로 붙여준다는 이야기다. foreach 마다. cookie의 데이터 형태에 익숙하지 않아서 벌어진 문제다.
}
return list;
}
http.createServer((req, res) => {
const cookies = parseCookies(req);
console.log(cookies)
if (req.url.startsWith('/login')) {
const { query } = url.parse(req.url);
const { name } = qs.parse(query);
const expires = new Date();
const randomInt = +new Date();
expires.setMinutes(expires.getMinutes() + 5);
session[randomInt] ={
name,
expires
}
res.writeHead(302, { Location: '/',
'Set-Cookie': `session=${encodeURIComponent(randomInt)}; Expires=${expires.toGMTString()}; HttpOnly; Path=/`,
});
res.end();
} else if (cookies.session && session[cookies.session] && session[cookies.session].expires > new Date()) {
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end(${session[cookies.session].name}님 안녕하세요);
} else {
fs.readFile('./server4.html', (err, data) => {
if (err) {
throw err;
}
res.end(data);
});
}
})
.listen(8083, () => {
console.log('8083번 포트에서 서버 대기중입니다!');
});
답변 1
실제 서비스에서도 cluster를 사용하나요?
1
314
2
캐싱에 관하여
0
279
3
salt를 실무에서 사용할때 항상 randomBytes로 만들어줘야 하나요?
0
347
1
게시물 올리기 오류
0
408
1
캐슁 이후 로그인창
0
266
1
kakao passport 질문있습니다.
0
493
3
global객체 공유 질문드립니다.
1
418
1
서버가 죽어버리네요
0
1047
8
포링키 문제..
0
235
2
커넥션 플래시 설치문제
0
216
2
익스프레스 제너레이터? 설치문제
0
2586
6
redis 질문입니다.
0
305
1
9장 세션을 DB에 저장시 리다이렉션 오류 발생
0
874
8
프레임워크 선택에 관하여 질문이 있습니다.
0
300
3
시퀄라이즈 질문입니다 ! !
0
588
1
리뉴얼 강의 12강 socket.io에서 req.session접근 관련 질문
0
922
6
oAuth 질문입니다.
0
356
3
GCP 질문입니다.
0
366
1
Passport 모듈 로그인 구현관련
0
720
6
카카오 로그인 관련 질문입니다!!
0
606
4
스스로 해보기 10-16 nunjuncks 질문있습니다
0
499
5
제로초님 HTTP 완벽가이드 추천해주신거 너무 잘 읽었습니다.
0
317
2
gif채팅방 nunjucks관련 질문입니다!
0
338
3
현영님 몽고db관련 질문입니다.
0
233
3





