我在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分钟。
我真的很难过,任何帮助都会受到赞赏
...谢谢
答案 0 :(得分:0)
在使用useragent时,我遇到了类似的问题。尝试匹配IP。
$config['sess_match_ip'] = TRUE;
$config['sess_match_useragent'] = FALSE;