개발자
일반적으로 웹/앱 클라이언트에서 사용자가 로그인 상태인지 어떻게 확인하는지 궁금합니다. 1. 서비스에 접속하고 페이지를 이동할 때마다 매번 유저 정보를 가져오는 api를 호출해서 에러가 나면 로그아웃 상태로 판단한다. 2. 서비스에 접속할 때 한번 유저 정보 api를 호출하고 에러가 나면 로그인 api를 호출해서 성공할 때까지 로그아웃 상태로 판단한다. 3. 쿠키나 로컬 스토리지 같은 곳에 세션 id가 있는지 여부로 판단한다. 지금 생각해본건 이렇게 세가지 인데 일반적으로 어떻게 로그인 상태인지 매번 판별하는지 궁금합니다! 그리고 환경을 nextjs로 가정했을때 이 유저 api 호출을 ssr과 csr중 어디서 호출하는게 좋을지도 알고 싶습니다.
답변 2
인기 답변
로그인 후에 접근하는 화면은 일반적으로 인증된 사용자만 접근 가능한 endpoint를 호출하는 경우가 많습니다. 따라서 1. 로그인 전에는 로그인 시도를 통해 인증 2. 로그인 후에는 response status code를 확인해서 200인지, 201인지, 401인지, 403인지 등으로 판단하시면 됩니다. 다만 status code 를 활용하는 경우에는 서버와 약속(?)이 잘 되어있어야 합니다
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2023년 12월 08일
일반적으로 클라이언트에서 사용자의 로그인 상태를 판별하는 방법은 크게 세 가지로 나눌 수 있습니다. 1. **쿠키나 세션을 활용하는 방법**: 가장 기본적인 방법으로, 쿠키나 세션에 유저 정보를 저장하고 이를 확인해 유저의 로그인 상태를 체크합니다. 보안성이 떨어진다는 단점이 있지만, 간단하게 구현할 수 있다는 장점이 있습니다. 2. **토큰 기반 인증 (JWT, Oauth 등)을 이용하는 방법**: 클라이언트와 서버가 주고받는 요청(Request)나 응답(Response) 헤더에 토큰을 포함시켜 인증 정보를 관리합니다. 이러한 방식은 전체 통신 프로세스에서 보안성을 높일 수 있는 장점이 있으나, 토큰 생성 및 관리, 만료 시간 설정 등 추가적인 구현이 필요합니다. 3. **Local Storage와 Session Storage를 활용하는 방법**: 웹 스토리지(HTML5 Web Storage)를 이용해 사용자 로그인 정보를 클라이언트 사이드에 저장하고 관리합니다. 쿠키와 비교하여 용량 한계가 넓고, 서버로 전송되지 않아 트래픽 감소 효과가 있습니다. 하지만 웹 스토리지는 XSS(크로스 사이트 스크립팅) 공격에 취약하다는 단점이 있습니다. 실제 서비스에서는 이 세 가지 방법을 적절히 조합하여 사용합니다. 일부 서비스에서는 추가적으로 사용자의 IP 주소를 체크하는 등 다양한 방법을 사용하여 보안성을 높이기도 합니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!