코딩ㆍ개발 정보/HTML 연습

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

RioRex 2025. 2. 14.

클래식 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

반응형

댓글