✨ Project/DangleDangle

[ DangleDangle ] 로그인 상태 관리 : sessionStorage를 활용한 로그인 처리

shyunu 2025. 3. 16. 21:12
728x90

웹 애플리케이션에서 데이터를 클라이언트 측에 저장할 때 localStoragesessionStorage를 자주 사용합니다. 이 두 가지는 모두 웹 스토리지 API의 일부로, 브라우저에서 데이터를 저장하고 관리하는 데 도움을 줍니다. 

이번 블로그에서는 localStoragesessionStorage의 차이점, 각각의 특징과 사용법 그리고 sessionStorage를 활용하여 로그인 상태를 관리하는 방법에 대해 다뤄보겠습니다. 

 

 


1. localStorage란 ?

localStorage는 웹 브라우저에 데이터를 영구적으로 저장할 수 있는 공간을 제공합니다. 사용자가 브라우저를 종료하더라도 데이터는 유지되며, 데이터는 브라우저의 세션이 끝날 때까지 계속 남아있습니다. 다른 웹 페이지나 탭에서도 동일한 localStorage 데이터를 접근할 수 있습니다.

 

1) 특징

영구적 저장: 브라우저를 종료해도 데이터가 유지됩니다.

저장 용량: 보통 5MB 정도의 데이터를 저장할 수 있습니다. (브라우저에 따라 다를 수 있음)

동기적 접근: localStorage는 동기적으로 동작하며, 데이터의 읽기/쓰기가 빠릅니다.

 

2) 사용법

✱ 저장하기

localStorage.setItem('username', 'shyunu');

 

 

✱ 불러오기

const username = localStorage.getItem('username');
console.log(username); // 'shyunu'

 

 

✱ 삭제하기

localStorage.removeItem('username');

 

 

✱ 전체 삭제하기

localStorage.clear();

 

 


2. sessionStorage란 ?

sessionStoragelocalStorage와 매우 유사하지만, 브라우저 세션이 끝날 때 데이터를 삭제하는 특징이 있습니다. 즉, 사용자가 브라우저 탭을 닫거나 새로 고침을 하면 데이터가 사라집니다. sessionStorage는 한 세션(탭) 내에서만 유효하며, 다른 탭이나 브라우저에서 공유되지 않습니다.

 

1) 특징

세션 기반 저장: 브라우저 탭이 닫히면 데이터가 삭제됩니다.

저장 용량: localStorage와 유사하게 5MB 정도의 데이터를 저장할 수 있습니다.

동기적 접근: sessionStoragelocalStorage와 마찬가지로 동기적으로 동작합니다.

 

2) 사용법

✱ 저장하기

sessionStorage.setItem('sessionId', 'shyunu');

 

 

✱ 불러오기

const sessionId = sessionStorage.getItem('sessionId');
console.log(sessionId); // 'shyunu'

 

 

✱ 삭제하기

sessionStorage.removeItem('sessionId');

 

 

✱ 전체 삭제하기

sessionStorage.clear();

 

 


3. localStorage vs sessionStorage

특징 localStorage sessionStorage
데이터 지속성 브라우저를 종료하고 다시 열어도 데이터가 유지됨 브라우저 탭을 닫으면 데이터가 삭제됨
데이터 공유 동일 도메인 내 다른 탭에서도 데이터가 공유됨 동일 탭 내에서만 데이터가 공유됨
용량 약 5MB (브라우저마다 차이 있음) 약 5MB (브라우저마다 차이 있음)
API localStorage.setItem,
localStorage.getItem
sessionStorage.setItem,
sessionStorage..getItem
사용 용도 사용자 설정, 로그인 정보 등 지속적인 데이터 저장 세션 상태 유지, 임시 데이터 저장 등
보안 보안 취약할 수 있음 (민감한 데이터 저장 X) 세션 종료 시 데이터 삭제로 보안이 상대적으로 안전함

 

 


4. 용도에 따른 Storage 선택 방법

localStorage 사용하기: 사용자가 로그인한 상태를 브라우저를 종료하더라도 유지하고 싶을 때 적합합니다. 예를 들어, 자동 로그인, 언어 설정, 테마 설정 등 사용자가 앱을 종료하고 다시 시작해도 설정을 유지하려는 경우에 유용합니다.

 

sessionStorage 사용하기: 사용자가 세션 내에서만 로그인 상태를 유지하고, 탭을 닫으면 자동으로 로그아웃되기를 원할 때 적합합니다. 예를 들어, 일회성 로그인, 민감한 정보 처리 등이 필요할 때 유용합니다.

 

 


5. sessionStorage로 DangleDangle 프로젝트 로그인 상태 관리하기

로그인 상태를 관리하는 데 있어, sessionStorage는 매우 유용합니다. 사용자가 로그인하면, 해당 세션에서만 로그인 상태를 유지하고, 브라우저 탭을 닫으면 자동으로 로그아웃 처리가 되기 때문입니다.

 

1) 로그인 시 sessionStorage에 정보 저장하기

사용자가 로그인하면, 로그인 정보를 sessionStorage에 저장할 수 있습니다. 예를 들어, 사용자 ID와 로그인 상태를 저장합니다.

sessionStorage.setItem('isLoggedIn', 'true');
sessionStorage.setItem('userId', 'shyunu');

 

 

2) 로그인 상태 확인하기

페이지가 로드될 때, sessionStorage에서 로그인 정보를 확인하여 사용자가 로그인 상태인지를 판단할 수 있습니다.

const isLoggedIn = sessionStorage.getItem('isLoggedIn') === 'true';

 

 

3) 로그아웃 시 정보 삭제하기

사용자가 로그아웃하면, sessionStorage에서 로그인 정보를 삭제하여 로그인 상태를 초기화할 수 있습니다.

sessionStorage.removeItem('isLoggedIn');
sessionStorage.removeItem('userId');

 

 


6. 왜 sessionStorage가 로그인 상태 관리에 적합한가 ?

1) 세션 종료 시 자동 로그아웃

sessionStorage의 가장 큰 장점은 세션 종료 시 자동으로 데이터가 삭제된다는 것입니다. 사용자가 브라우저 탭을 닫으면 로그인 정보가 자동으로 삭제되므로, 자동으로 로그아웃되며 보안 위험을 줄일 수 있습니다. 사용자가 로그아웃을 명시적으로 하지 않아도, 세션이 종료되면 정보가 사라집니다.

 

 

2) 보안 강화

sessionStorage세션 동안만 유효하기 때문에, 클라이언트 측에서 저장된 로그인 정보가 오래 유지되지 않아 보안상 유리합니다. 반면, localStorage브라우저를 종료하고 다시 열어도 데이터가 유지되므로, 장기간 로그인 상태를 유지하려면 보안 취약점이 될 수 있습니다. 따라서 민감한 정보를 저장할 때 sessionStorage를 사용하는 것이 더 안전합니다. 🔐

 

 

3) PostgreSQL과의 연동

서버 측에서는 PostgreSQL과 같은 데이터베이스를 사용해 사용자의 로그인 정보를 관리하는 것이 좋습니다. sessionStorage클라이언트 측에서 로그인 상태만 관리하고, 서버에서 인증 및 세션을 관리하는 방식으로, 보다 안전하고 효율적으로 로그인 상태를 처리할 수 있습니다.

728x90