• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

AuthService::logout 메소드에서 Session 데이터를 비우는 방법에 대한 질문입니다.

22.02.22 18:02 작성 조회수 226

1

안녕하세요, '로그아웃' 구현 부분에서 세션을 비우는 처리에 대해 질문드립니다.

만약,  운영중인 사이트를 이용한다고 가정했을 때 아래와 같이 대부분이 로그인 및 로그아웃 절차가 진행된다고 생각합니다.

1. 홈페이지 로그인: 세션에 유저 데이터 생성

2. 홈페이지 이용

3. 브라우저를 닫거나 로그아웃 버튼 클릭: 세션이 완전이 사라지거나, 세션은 있되 세션에서 유저 정보가 비워짐

 

3번 항목에서 보통 PHP에서 세션을 비울 때(삭제할 때) 아래 두 함수를 쓰는 모습을 볼 수 있었는데요.

 

1. session_destory() => 전체 세션을 삭제(예로 세션 저장소(파일시스템의 세션 파일 또는 DB의 세션 관리 Table의 세션 데이터))

2. session_unset() => 세션에서 변수만 삭제(CODE E) $_SESSION = array();)

 

이 외 세션에서 '유저' 정보만 비우는 경우(CODE EX) $_SESSION['user'] = array();)에는 어떤 경우가 있는지 알 수 있을까요?

답변 1

답변을 작성해보세요.

1

세션에 유저의 정보만을 비우는 경우는 거의 없습니다. 제가 프로젝트를 하면서도 세션의 유저의 값만 비우려고 시도한 적은 없습니다. 세션 아이디를 새로만들고 새로운 세션을 시작한 경우는 많은 것입니다. 만약에 비밀번호를 변경했는데, 다시 로그인하게 하고싶은 경우에도 로그아웃을 하고 재 로그인을 요구하여 새로운 인증 세션을 만듭니다.

다만 지우려는 세션이 '유저' 라는 점을 배제한다면, 세션 값의 일부를 지우는 경우는 꽤 많습니다. 세션에 임시값을 저장해놨다가 클라이언트에서 출력한 뒤 곧장 없앨 수도 있습니다. 플래시(Flash) 메시지라고 하죠. 세션에 임시값을 저장하는 용도로 사용하는 것은 아주 흔한 일 중 하나입니다. 사용자가 폼을 전송했으나 유효성 검사에서 실패하여 뒤로 돌아가야하는 경우, 입력해둔 폼값을 세션으로 임시로 저장해두고 인풋필드의 기본값으로 채워넣고 사용 후 제거하는 방식으로는 사용할 수는 있습니다.