因此,登录后,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,并且它在两个版本中都有发生。
答案 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_database
为TRUE
。对于它的价值,我们确实在相同的CI应用程序中运行Ion Auth和Flexi Auth。我查看了我们的Ion Auth配置,它主要是库存设置。我们更改的设置与会话无关(密码长度等)。