根据代码点火器中的用户角色设置会话超时


Set session timeout based on the user role in Codeigniter

Codeigniter 中有一个用于设置会话过期的配置设置:

$config['sess_expiration'] = 14400; //in seconds

但这适用于所有类型的用户角色(管理员/前端用户)。我想为管理员设置终身会话,只想为前端用户应用上述设置。

我怎样才能做到这一点?

会话数据存储在服务器上,如果浏览器关闭,会话数据就会被销毁。对于终身登录,您需要使用cookie例如"记住我选项"

如果要使用会话实现,则需要手动执行:例如。

if ($ROLE != 'admin' && isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
    // last request was more than 30 minutes ago
    session_unset();     // unset $_SESSION variable for the run-time 
    session_destroy();   // destroy session data in storage
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp

我已经给出了核心php的例子,你可以在代码点火器中实现它

$this->session->userdata('LAST_ACTIVITY');

$this->load->helper('cookie');
$cookie = $this->input->cookie('ci_session'); 
$this->input->set_cookie('ci_session', $cookie, '31557600'); 

虽然我不确定使会话永不过期是个好主意,但如果用户以管理员身份登录,您可能会将会话 cookie 设置为在未来一年内过期。