【问题标题】:Codeigniter - Random LogoutCodeigniter - 随机注销
【发布时间】:2014-04-12 13:04:51
【问题描述】:

我在 CodeIgniter 2.1.4 的会话中遇到了一个非常奇怪的错误。我将加密会话存储到数据库中。 config.php 中的会话配置如下:

$config['sess_cookie_name']     = 'club_session';
$config['sess_expiration']          = time()+(60*60*24); //expire in one day
$config['sess_expire_on_close']    = FALSE;
$config['sess_encrypt_cookie']     = TRUE;
$config['sess_use_database']       = TRUE;
$config['sess_table_name']          = 'session';
$config['sess_match_ip']            = FALSE;
$config['sess_match_useragent']    = TRUE;
$config['sess_time_to_update']     = 300;

我也在 config.php 文件中设置了一个加密密钥。

当会员成功登录后,会执行以下会话逻辑:

$session_data = array(
    'member_login_state' => TRUE,
    'memberID' => $memberID
);
$this->session->set_userdata($session_data); //set member

当会员退出时:

$session_data = array(
    'member_login_state' => '',
    'memberID' => ''
);
$this->session->unset_userdata($session_data); //unset member

我用以下方法扩展了 CI_Controller:

public function member_is_logged_in() 
{
    if ($this->session->userdata('member_login_state') == FALSE) 
    {
        redirect('member'); //redirect to member login
    } 
}

一旦成员登录,为成员提供授权区域的每个控制器都会扩展如下:

class Hub extends MY_Controller {

    function __construct()
    {
        parent::__construct();
        $this->member_is_logged_in(); // check member is logged in
    }

    //methods below.....
}

现在,如果我在未登录时访问这些扩展控制器中的任何方法,我将被重定向到登录页面。登录后,我可以在输出不同视图的几种不同方法之间导航,然后我会自动注销并重定向回登录页面。这可能随时发生,例如1 分钟、2 分钟、10 分钟。

我真的很难过,任何帮助将不胜感激

谢谢...

【问题讨论】:

  • 这对我的问题没有帮助,我不想重写我的整个会话控件并添加另一个库。

标签: php codeigniter session


【解决方案1】:

我在用户代理上匹配时遇到了类似的问题。请尝试在 IP 上进行匹配。

$config['sess_match_ip'] = TRUE;
$config['sess_match_useragent'] = FALSE;

【讨论】:

    猜你喜欢
    • 2017-03-15
    • 1970-01-01
    • 2017-11-08
    • 2020-06-17
    • 2012-09-26
    • 1970-01-01
    • 2017-06-20
    • 2013-01-20
    • 2014-03-01
    相关资源
    最近更新 更多