[개발일지]쿠키 생성 및 쿠키를 이용한 인증기능

1 minute read

쿠키를 이용해 로그인 상태를 UI에 반영하려는 작업을 하기로했다.
메인화면에서 login 을 누르면 로그인 페이지로 이동해서 id/pw를 입력하고, login_process에서 쿠키를 생성해서 메인페이지로 돌아올때
쿠키값이 있으면 login이 logout으로 바뀌게 하는 작업이다.


문제가 된 상황
생활코딩 강의를 보면서 따라했는데, 로그인 후 메인페이지로 왔을 때 쿠키값이 없는 것 이었다.
근데 다시 로그인페이지로 이동하면 쿠키가 생성되어 login이 logout으로 바뀌는게 사실 더 환장할 노릇이었다.
디버깅 모드로 실행했을 때 login_process 과정에서 분명 쿠키가 생성되었는데 router를 타면서 사라지는 것 같았다.(추측)

몇 일을 쩔쩔매다가 회사 동료에게 도움을 요청했다.
역시나 금방 원인을 찾았고, 문제가 해결됐다.


원인
스크린샷 2020-06-02 오후 10 33 20

강의에서는 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가 ‘/’ 로 생성된 쿠키 스크린샷 2020-06-02 오후 10 47 26

Leave a comment