보통 웹서비스를 이용하다보면 다음과 같은 상황을 자주 마주한다.

로그인하지 않고 이용하다가 특정 기능을 이용하면 로그인이 필요해서 로그인창으로 이동되고 로그인을 마치면 원래 다시 작업하던 페이지로 돌아간다.

어떻게 이 기능을 구현할 수 있을까?

두 가지를 활용해서 구현할 수 있었다.

Referer Header

리소스가 요청된 주소 정보를 담고 있는 헤더

이 헤더 정보를 사용하면 서버에서는 이 위치로의 요청이 어디서 발생했는지 알 수 있어서 데이터 분석, 로깅, 캐싱에 활용할 수 있다고 한다.

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer

Session

클라이언트와 서버의 연결 정보를 저장하는 방법

HTTP 프로토콜을 비연결을 지향하는 무상태 프로토콜로 기본적으로 한 번의 요청 사이클이 끝나면 서버에서 클라이언트의 정보를 알 수 없다.

그렇지만 클라이언트의 상태를 서버에서 저장할 필요가 있는데 이때 세션을 활용할 수 있다.

구현하기

개발 중인 서비스는 모든 로그인은 소셜로그인으로 구현하고 있다.

OAuth로 로그인 로직을 구현하는 경우는 웹 서비스가 별도의 로그인 페이지를 가지는 것과 다르게 인증서버, 리소스서버로 리다이렉션이 여러 번 이루어진다.