코딩ㆍ개발 정보/HTML 연습

[ASP] 로그인에서 쿠키와 세션의 용도, 자동로그인 기능

RioRex 2025. 2. 14. 09:27

클래식 ASP에서 브라우저 로그인 체크를 **Session**으로만 처리할 수도 있지만, 쿠키를 사용하는 것이 더 안정적인 경우가 많습니다.

🔹 Session만 사용할 경우의 문제점

  1. 세션 만료 문제
    • 사용자가 일정 시간이 지나면 Session이 자동으로 만료됨 (기본값: 20분).
    • 사용자가 페이지를 새로고침하지 않으면, 로그인 정보가 갑자기 사라질 수 있음.
  2. 브라우저 종료 시 세션 삭제
    • Session은 기본적으로 브라우저를 닫으면 사라짐.
    • 사용자가 로그인 후 브라우저를 닫았다가 다시 열면, 다시 로그인해야 함.
    • 쿠키를 사용하면 일정 기간 유지할 수 있음.
  3. 로드 밸런싱 환경에서 세션 유지 문제
    • 여러 대의 웹 서버를 사용하는 경우(로드 밸런싱), 사용자가 요청을 보낼 때 다른 서버로 연결될 경우 세션이 유지되지 않을 수 있음.
    • 쿠키를 사용하면 서버가 바뀌어도 로그인 상태 유지 가능 (쿠키 기반 인증 토큰 사용).
  4. 새로운 탭에서 로그인 유지되지 않음
    • Session은 보통 브라우저의 단일 창/탭에서만 유지됨.
    • 새 탭을 열면 기존 세션이 유지되지 않을 수 있음.
    • 쿠키는 모든 탭에서 유지됨.

🔹 쿠키를 사용하는 이유

  1. 세션 유지 시간과 관계없이 로그인 유지 가능
    • 쿠키는 사용자가 직접 로그아웃할 때까지 유지 가능 (Expires 설정 가능).
    • 로그인 상태를 유지하려면 세션만으로는 부족하고, 쿠키를 병행해야 함.
  2. 서버 부담 감소
    • Session은 서버 메모리에 저장되므로, 많은 사용자가 접속하면 서버 부하 증가
    • 쿠키를 사용하면 클라이언트 측에서 로그인 정보를 관리할 수 있어 서버 부담이 줄어듦.
  3. 자동 로그인 구현 가능
    • 사용자가 "로그인 유지" 기능을 원할 경우, 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

반응형