我的目标是销毁已登录使用的会话,并在他空闲 20 分钟后强制他再次登录。这是我的做法:
在每个控制器中,我都会进行以下检查:
if(reach_idle_limit()) { redirect('logout'); }
并且
reach_idle_limit()
是我的一个助手类中的一个助手方法:function reach_idle_limit() { $idle_period = 1200; //20 mins $CI =& get_instance(); $last_activity = $CI->session->userdata('last_activity'); $now_time = time(); //If $last_activity is not set, don't force a logout if($last_activity == False || $last_activity == 0){ return false; } //If idle period exceeded: destroy the session and return true else if($now_time - $last_activity > $idle_period){ $CI->session->sess_destroy(); return true; } //else, update session's last_activity to current time, return false else{ $CI->session->set_userdata('last_activity', $now_time); return false; } }
当我给出一个小的值时,这很好$idle_period
用,比如 60 秒。但是当我给它我寻求的价值时,20分钟,它不起作用!
供参考:
- 我正在使用带有 Codeigniter 的
ag_auth
库(用于身份验证部分)。 - 我的配置变量
sess_expiration
设置为 0。