안녕하세요!
CI로 모바일 웹을 개발하여 현재 출시까지 한 상태인데.. 어플에 로그인 한 사용자의 로그인이 자동으로 풀리면( 세션 만료로 인해)
해당 사용자에게 알림이 가지 않도록 처리하려고 합니다. 기기 토큰값은 사용자 DB에 저장되어있는데...
CI 포럼 검색해보니 Session.php 를 확장 개발하여 로그 저장해주는 답변이 있길래
Session.php 에서 만료 체크하는 부분은 확인 하였습니다.
if ((empty($_SERVER['HTTP_X_REQUESTED_WITH']) OR strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest')
&& ($regenerate_time = config_item('sess_time_to_update')) > 0
)
{
if ( ! isset($_SESSION['__ci_last_regenerate']))
{
$_SESSION['__ci_last_regenerate'] = time();
}
elseif ($_SESSION['__ci_last_regenerate'] < (time() - $regenerate_time))
{
$this->sess_regenerate((bool) config_item('sess_regenerate_destroy'));
//자동 만료 부분 확인
}
}
해당 부분에 쿼리를 처리할 수 있는 함수를 넣으려고 하니.. Session.php에서 처리하면 안될것 같아서..
어느 시점에 작업을 해줘야할지 모르겠어서 이렇게 질문을 남깁니다 ㅠㅠ
답변 부탁드립니다 ㅠㅠ
로직이 어떻게 돼어있는지는 모르겠습니다만..
개인적인 의견으로는 노티를 보낼때 세션을 체크하는것이 좋지 않을까 생각됍니다.
DB세션을 사용하신다면, 현재 로그인중인 세션 ID들을 쉽게 획득 가능하실듯하고, 그 ID에서 사용자를 가져올수 있으실듯합니다.
그게 아니라면 고전적이지만, PHP가 실행됄때마다 그 시간과 유저 ID를 DB에 기록해서 세션이 풀리는 시간으로 가져오시면 됄듯합니다.