Codeigniter 2.2和Ion Auth在重定向后丢失userdata

时间:2015-09-02 20:37:16

标签: php codeigniter session redirect

因此,登录后,Ion Auth使用$this->session->user_setdata()建立会话信息并重定向到主页面。然后在MY_Controller中我们使用Ion Auth的logged_in()方法,该方法使用$this->session->userdata('identity')检查该信息以查看用户是否已登录。

在重定向之前,所有userdata都设置为$this->session->all_userdata()所见,但在进入MY_Controller时,它们都没有,并导致应用程序重定向回登录页面。

我在2.1.4上已经升级到2.2,并且它在两个版本中都有发生。

1 个答案:

答案 0 :(得分:0)

我使用Flexi Auth时遇到了同样的问题,这让我感到十分愤怒。我们通过在sess_encrypt_cookie中使用application/config/config.php设置加密Cookie找到了一种解决方法。 (见:Session Class)。

使用xdebug逐步浏览我们的应用程序,我们可以看到在未加密Cookie时会重新生成PHP会话。启用cookie的加密会绕过框架中的代码块,从而不断重新生成会话ID。这个问题似乎完全包含在CI框架中,并且处理会话。

<强> 修改

如果有帮助,这是我们config.php中的会话配置:

$config['sess_cookie_name']             = 'ci_session';
$config['sess_expiration']              = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie']  = TRUE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']              = 'ci_sessions';
$config['sess_match_ip']                = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;`

我们更改的设置是sess_encrypt_cookie,如前所述,加上从数据库驱动会话,sess_use_databaseTRUE。对于它的价值,我们确实在相同的CI应用程序中运行Ion Auth和Flexi Auth。我查看了我们的Io​​n Auth配置,它主要是库存设置。我们更改的设置与会话无关(密码长度等)。