클래식 ASP에서 브라우저 로그인 체크를 **Session**으로만 처리할 수도 있지만, 쿠키를 사용하는 것이 더 안정적인 경우가 많습니다.
🔹 Session만 사용할 경우의 문제점
- 세션 만료 문제
- 사용자가 일정 시간이 지나면 Session이 자동으로 만료됨 (기본값: 20분).
- 사용자가 페이지를 새로고침하지 않으면, 로그인 정보가 갑자기 사라질 수 있음.
- 브라우저 종료 시 세션 삭제
- Session은 기본적으로 브라우저를 닫으면 사라짐.
- 사용자가 로그인 후 브라우저를 닫았다가 다시 열면, 다시 로그인해야 함.
- 쿠키를 사용하면 일정 기간 유지할 수 있음.
- 로드 밸런싱 환경에서 세션 유지 문제
- 여러 대의 웹 서버를 사용하는 경우(로드 밸런싱), 사용자가 요청을 보낼 때 다른 서버로 연결될 경우 세션이 유지되지 않을 수 있음.
- 쿠키를 사용하면 서버가 바뀌어도 로그인 상태 유지 가능 (쿠키 기반 인증 토큰 사용).
- 새로운 탭에서 로그인 유지되지 않음
- Session은 보통 브라우저의 단일 창/탭에서만 유지됨.
- 새 탭을 열면 기존 세션이 유지되지 않을 수 있음.
- 쿠키는 모든 탭에서 유지됨.
🔹 쿠키를 사용하는 이유
- 세션 유지 시간과 관계없이 로그인 유지 가능
- 쿠키는 사용자가 직접 로그아웃할 때까지 유지 가능 (Expires 설정 가능).
- 로그인 상태를 유지하려면 세션만으로는 부족하고, 쿠키를 병행해야 함.
- 서버 부담 감소
- Session은 서버 메모리에 저장되므로, 많은 사용자가 접속하면 서버 부하 증가
- 쿠키를 사용하면 클라이언트 측에서 로그인 정보를 관리할 수 있어 서버 부담이 줄어듦.
- 자동 로그인 구현 가능
- 사용자가 "로그인 유지" 기능을 원할 경우, Session만으로는 불가능.
- 쿠키를 사용하면 사용자가 다시 방문해도 자동 로그인 가능.
✅ 권장 로그인 체크 방법
1. 세션 + 쿠키 병행 사용
- 기본적으로 Session을 사용하여 로그인 관리
- "로그인 유지" 옵션이 있으면 쿠키로 로그인 정보 저장
<%
Dim userID
userID = Session("userID")
If userID = "" Then
' 세션이 만료되었을 때 쿠키 확인
If Request.Cookies("LoginID") <> "" Then
Session("userID") = Request.Cookies("LoginID")
Else
Response.Redirect "login.asp" ' 로그인 페이지로 이동
End If
End If
%>
2. 쿠키로 자동 로그인 유지
<%
Dim userID, rememberMe
userID = Request.Form("userID")
rememberMe = Request.Form("rememberMe")
' 로그인 성공 시
Session("userID") = userID
If rememberMe = "yes" Then
Response.Cookies("LoginID") = userID
Response.Cookies("LoginID").Expires = DateAdd("d", 30, Now()) ' 30일 유지
End If
Response.Redirect "index.asp"
%>
3. 로그아웃 시 쿠키 삭제
<%
Session.Abandon
Response.Cookies("LoginID") = ""
Response.Cookies("LoginID").Expires = Date - 1 ' 쿠키 즉시 삭제
Response.Redirect "login.asp"
%>
🚀 결론
✔ 세션만 사용할 수 있지만, 쿠키를 병행하면 훨씬 안정적인 로그인 관리 가능!
✔ 특히 "로그인 유지" 기능을 원하면 쿠키는 필수!
✔ 세션은 빠르지만, 서버 부담을 고려해야 하므로 대규모 서비스에서는 쿠키를 활용하는 것이 좋음.
crated by chatgpt
반응형
'코딩ㆍ개발 정보 > HTML 연습' 카테고리의 다른 글
반응형 웹사이트 - 블록은 Flex로 레이아웃은 Grid 로 (1) | 2025.03.04 |
---|---|
2차 도메인의 쿠키 설정 방법 (0) | 2025.02.14 |
테이블 헤더 고정하기 by 스티키 sticky (0) | 2025.01.16 |
CSS reset 과 input 모듈 커스터마이징, checkbox, select, file 등 (0) | 2025.01.13 |
mvc를 서블릿(get, put) dao dto jsp(jstl, ajax)의 인자 흐름으로 보기 (1) | 2024.11.19 |
댓글