인프런 커뮤니티 질문&답변

정중한 전어님의 프로필 이미지

작성한 질문수

React로 NodeBird SNS 만들기

세션이 만료되었을 때 로그인 페이지로 이동하려면

20.05.24 22:49 작성

·

1.4K

0

안녕하세요! 강의 듣고 토이프로젝트를 진행중입니다.

만들고 있는 서비스는 로그인을 해야 이용할 수 있는 기능이 주인데, 배포를 하고 진행하다보니 중간에 세션이 만료되면 req.user를 불러오지 못하여 에러를 표시하는 문제가 있어서 백엔드에서 만약 로그인 상태가 아니라면 바로 로그인 페이지로 보내주려고 합니다. (사가에서 페이지를 이동시키기에는 로그인이 필수인 경우가 너무 많아서 아예 isLoggedIn 미들웨어에서 로그인 정보를 발견하지 못할 시 이동을 시키고자 합니다!)

isLoggedIn 미들웨어에서 로그인 상태가 아닐 시 res.redirect('http://localhost:3060/login); 으로 로그인 페이지로 이동하는 코드를 작성하고 로그인 정보를 없앴더니 

이런 식으로 302에러만 줄창 뜨고 리다이렉션이 일어나지 않다가 접속이 끊겼습니다.

메인에 접속했을 때에 사용자 정보가 없으면 로그인 페이지로 이동시키는 코드가 프론트에 적용되어 있어서 

isLoggedIn 미들웨어에서 로그인 상태가 아닐 시 페이지를 새로고침하는 식으로 진행하고자 node js에서 새로고침을 시키는 방법을 찾아보는데 원하는 방법을 찾기가 힘드네요 ㅠㅠ

이런 경우에는 어떻게 처리해야 할지 조언해주시면 감사하겠습니다 ㅠㅠ 

+ 익스프레스에서 세션의 기한을 늘려줄수도 있던데 혹시 그걸 이용해서 로그아웃이 안되도록 1년 이런식으로 장시간 로그인이 유지되게 늘려주면 서버에 무리가 갈까요...? 

답변 2

0

정중한 전어님의 프로필 이미지

2020. 05. 25. 18:44

아직 세션 시간을 따로 설정하지는 않고 코드는 강의에서 작성한 내용을 따라 똑같이 작성한 상태입니다!

서버가 재시작되는것은 코드에 이상이 있어서인가요 아니면 ec2가 주기적으로 서버를 재시작하나요?

사이트를 이용하는 사용자들이 핸드폰에 이전에 켜둔 인터넷 브라우저에서 그대로 사용하는 경우가 있는데..  로그인한지 하루 이상 시간이 지나 만료되어 그 때에 req.user.id를 가져오지 못하는것 같다고 생각되었습니다 ㅠㅠ 이런 경우도 있을까요...???? 아니면 서버문제일까요...???

req.user.id를 가져오지 못할 경우 바로 로그인 페이지로 돌려보내는 기능을 넣고싶은데 해당 기능은 구현이 어려울까요...?!

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

2020. 05. 25. 17:23

세션 시간을 얼마로 두셨나요? 보통 하루는 갑니다. 서버가 재시작돼서 그냥 세션이 만료된 것 같습니다. 실무에서는 나중에 express-session에 redis같은 것을 두어 서버가 재시작되어도 세션이 만료되지 않게 처리합니다.