CI 묻고 답하기

제목 사용자마다 세션 만료 시점을 다르게 하려면..
글쓴이 쿨교 작성시각 2013/10/30 14:21:15
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 14694   RSS
 안녕하세요. 

사용자마다 세션 만료 시점을 다르게 하려면.. 어떻게 해야할까요 ??


제가 이렇게도 해보고 저렇게도 해보는데 잘 안되네요 ;;


현재 세션은 DB가 아닌 CI에서 제공하는 세션 사용중입니다.


일단 A사용자는 무제한 세션이 필요하고

B사용자는 5시간 세션이 필요합니다.

if (아래 구운 쿠키가 있다면)
{
  $this->ci->load->library('session', array('sess_expiration' => 쿠키구운값));
}
else
{
  $this->ci->load->library('session');
}


if (쿠키가 없거나 쿠키가 변경되지 않았다면)
{
  // 쿠키 굽기
  $this->ci->input->set_cookie('sess_expiration', 사용자에 따른 세션 유지 기간, 2년);
}

세션 라이브러리를 autoload로 못하고 후킹으로 하고 있습니다.

이유는  A사용자인지 B사용자인지 세션을 먼저 체크를 해야하고

세션 로드할때만 sess_expiration 이 설정이 가능한 것 같드라구요.

그리고 sess_time_to_update 값은 항상 sess_expiration 값의 10분의 1로 설정되게 하였습니다.

근데 이게 작동은 하는 것 같은데 세션이 자꾸 끊어지드라구요.

뭔가 좋은 방법 없을까요 ;;








 다음글 css나 js 파일의 캐싱이 안되게 하는 방법이 있나요... (6)
 이전글 AR(액티브레코드) 캐싱은 필수입니까? (2)

댓글

쿨교 / 2013/10/30 14:44:50 / 추천 0
후킹에서 세션을 로드하니까 끊기는 것 같네요..;;

후킹으로 안하고 사용자에 따라서 세션주기를 바꾸는 방법이 없을까요?
taegon / 2013/10/30 15:53:43 / 추천 0
sess_expiration를 설정해서 처리하는 것 보다는

로그인 시 혹은 변동 사항이 있을 때

로그인 유지할 수 있는 시간을 기록하고

웹 페이지 로딩 시 유지시간을 체크해서 세션을 날리는 형식으로 하는 것이 좋아보입니다.


쿨교 / 2013/10/30 17:08:35 / 추천 0
  taegon 님 말씀은 

세션 유지 기간을 일단 길게 잡아놓고 

로그인시 해당 사용자의 허용 유지 기간 체크 한 후에

매 페이지 로딩 시 마지막 활동 시간을 기록 후

매 페이지 로딩 시 마지막 활동과 현재 시간을 비교 후 허용 유지 기간이 넘어섰으면 

세션 삭제를 하란 말씀이신거죠?

감사합니다. 그렇게 처리 해보겠습니다!!