[개발일지]쿠키 생성 및 쿠키를 이용한 인증기능
쿠키를 이용해 로그인 상태를 UI에 반영하려는 작업을 하기로했다.
메인화면에서 login 을 누르면 로그인 페이지로 이동해서 id/pw를 입력하고, login_process에서 쿠키를 생성해서 메인페이지로 돌아올때
쿠키값이 있으면 login이 logout으로 바뀌게 하는 작업이다.
문제가 된 상황
생활코딩 강의를 보면서 따라했는데, 로그인 후 메인페이지로 왔을 때 쿠키값이 없는 것 이었다.
근데 다시 로그인페이지로 이동하면 쿠키가 생성되어 login이 logout으로 바뀌는게 사실 더 환장할 노릇이었다.
디버깅 모드로 실행했을 때 login_process 과정에서 분명 쿠키가 생성되었는데 router를 타면서 사라지는 것 같았다.(추측)
몇 일을 쩔쩔매다가 회사 동료에게 도움을 요청했다.
역시나 금방 원인을 찾았고, 문제가 해결됐다.
원인
강의에서는 main.js에서 쿠키를 생성했었는데, 기능별로 라우터를 분리하고자 /topic, /auth로 들어오는 요청은 따로 각각의 라우터에서 처리하게 했었다.
그래서 auth.js에서 생성한 쿠키는 Path가 /auth로 된 것이다.
그래서 메인페이지로 이동했을때는 쿠키값이 없다가, login 페이지로 이동하면 다시 생기는 것 이었다.
login_process = function(request, response){
var post = request.body;
var email = post.email;
var password = post.password;
if(email =='egoing777@gmail.com' && password=='111111'){
response.writeHead(302,{
'Set-Cookie':[
`email=${email}`,
`password=${password}`,
`nickname=egoing`
]
,Location:'/'
});
response.end();
}else{
response.end('Get Out Of Here !');
}
}
해결
쿠키별로 각각 Path를 지정해줌으로써 해결했고, logout을 할때도 역시 똑같이 처리해줘야 했다.
login_process = function(request, response){
var post = request.body;
var email = post.email;
var password = post.password;
if(email =='egoing777@gmail.com' && password=='111111'){
response.writeHead(302,{
'Set-Cookie':[
`email=${email}; Path=/`,
`password=${password}; Path=/`,
`nickname=egoing; Path=/`
]
,Location:'/'
});
response.end();
}else{
response.end('Get Out Of Here !');
}
}
exports.logout_process = function(request, response){
response.writeHead(302,{
'Set-Cookie':[
`email=; Path=/;Max-Age=0`,
`password=; Path=/;Max-Age=0`,
`nickname=; Path=/;Max-Age=0`
]
,Location:'/'
});
response.end();
}
Path가 ‘/’ 로 생성된 쿠키
Leave a comment