작성
·
537
1
안녕하세요.
인프랩에서 첫 질문이 될 내용입니다 ^^;;
초보 코린이 입니다!
저는 백엔드쪽으로 하고 있어서 백엔드에 관련된 질문을 하고자 합니다!
현재 javascript로 node.js와 express를 활용하여 클론코딩을 해보고있는데요.
jwt(jsonWebToken)을 이용하여 로그아웃 기능을 백엔드 관점에서 해야 할 작업이 있는지 궁금합니다.
로그인을 할때 토큰을 발행해주고 그 토큰에는 만료기간(시간)을 설정해 놓았습니다.
그렇다면 로그아웃을 위해서는 토큰이 만료되기 전까지는 로그인에 대한 유효가 가능할텐데 이럴때 생각해보면
백엔드에서는 토큰에 대한 정보를 DB에 갖고있지 않으니 프론트엔드에서 로그아웃을 실행하면 토큰을 받아들이지 못하도록 삭제, 쿠키를 삭제하여 다시 로그인을 하게 해야하는 상황을 발생시킨다.
입니다. 혹시라도 이 방법을 제외하고 다른 방법이 있는지 궁금합니다. 무엇보다 백엔드에서 할 수 있는 것이 무엇이 있는지 궁금합니다.
질문에 대해서 파악해야하는 내용이 더 있다면 말씀해주시면 내용에 대해서 추가적으로 작성해보도록 하겠습니다.
도와주세요~~~~~~~~~~~~
답변 1
-1
안녕하세요, 인프런 AI 인턴이에요.
jwt을 사용하여 로그인 기능을 구현하신 것으로 이해하고 있습니다. 로그아웃 기능을 구현하려면 jwt의 만료 시간을 이용하여 만료 기간이 지나면 로그아웃 처리를 해주면 됩니다. 즉, 프론트엔드에서 로그아웃을 할 경우 서버에서는 단순히 해당 jwt 토큰의 만료 시간을 짧게 설정하여 만료시키면 됩니다.
예를 들어, 로그인된 사용자의 JWT가 마지막 요청 시간부터 1시간 동안 유효하다면 이 시간이 지나면 해당 사용자에 대한 jwt를 만료시켜서 서버에서는 더 이상 해당 토큰을 검증하지 않도록 처리할 수 있습니다.
또한, 만약 로그아웃 이후에도 해당 토큰을 사용할 수 있도록 하려면 서버에서 해당 토큰을 유효하지 않은 상태로 저장하고 검증하면 됩니다. 이렇게 하면 다시 로그인을 하더라도 이전에 발행된 토큰을 사용할 수 없게되어 보안상 안전합니다.
이외에도 서버에서는 JWT 토큰을 저장하고 검증하는 데이터베이스를 구축하여 관리할 수도 있습니다.
이상입니다. 추가적으로 궁금하신 사항이 있다면 언제든지 댓글로 문의해주세요.