【问题标题】:Set session timeout based on the user role in Codeigniter根据 Codeigniter 中的用户角色设置会话超时
【发布时间】:2016-03-03 09:36:00
【问题描述】:

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

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

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

我怎样才能做到这一点?

【问题讨论】:

  • set config variable 喜欢if (user==admin){ $this->config->set_item('sess_expiration',30*24*2600)}

标签: php codeigniter session


【解决方案1】:

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

如果您想使用 session 来实现,您需要手动执行:例如。

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 的例子,你可以在 codeigniter 中实现它

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

【讨论】:

    【解决方案2】:
    $this->load->helper('cookie');
    $cookie = $this->input->cookie('ci_session'); 
    $this->input->set_cookie('ci_session', $cookie, '31557600'); 
    

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    相关资源
    最近更新 更多