在我目前的应用程序中,我向后端发出了很多ajax请求。
使用的Codeigniter版本是2.1.4。
所以在会话退出之后,我认为由于会话更改和ajax请求仍然使用过去的令牌发出请求。
使用codeigniiter版本2.2.1,我看到修复了"修复了会话库中的一个错误,其中在AJAX请求期间发生会话ID重新生成。"。 由于我有一个2小时的过期时间,并且我有一个没有页面重新加载的单页js页面应用程序,使用2.2.1版本,我是否需要每隔2小时发出一个ajax请求来更改背景中的令牌,而没有其他的ajax请求发生。
感谢。
答案 0 :(得分:0)
在config.php中检查并更新以下会话设置行。
/*
|--------------------------------------------------------------------------
| Session Variables
|--------------------------------------------------------------------------
|
| 'sess_cookie_name' = the name you want for the cookie
| 'sess_expiration' = the number of SECONDS you want the session to last.
| by default sessions last 7200 seconds (two hours). Set to zero for no expiration.
| 'sess_expire_on_close' = Whether to cause the session to expire automatically
| when the browser window is closed
| 'sess_encrypt_cookie' = Whether to encrypt the cookie
| 'sess_use_database' = Whether to save the session data to a database
| 'sess_table_name' = The name of the session database table
| 'sess_match_ip' = Whether to match the user's IP address when reading the session data
| 'sess_match_useragent' = Whether to match the User Agent when reading the session data
| 'sess_time_to_update' = how many seconds between CI refreshing Session Information
|
*/
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_expire_on_close'] = FALSE;
$config['sess_encrypt_cookie'] = FALSE;
$config['sess_use_database'] = FALSE;
$config['sess_table_name'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update'] = 300;
答案 1 :(得分:0)
这是我面临同样问题的常见问题。
为此,您必须创建扩展session
的自定义会话类,然后自动加载自定义会话。
class MY_Session extends CI_Session {
public function sess_update()
{
$CI =& get_instance();
if ( ! $CI->input->is_ajax_request())
{
parent::sess_update();
}
}
}
有关详情,请查看this