我正在开发一个Web应用程序,创建会话中的用户登录并登录到数据库。
正在发生的事情是,用户将无法通过自己的选项随机退出。背景故事是,这通常发生在共享帐户的用户身上(不是最好的东西,但应用程序的性质,意味着需要允许)。
这可能是随机退出的原因吗?或者更深入的CI和在数据库中存储会话?我还读到,一起关闭很多AJAX请求会导致SESSION ID发生变化,然后可能会覆盖数据库记录并将用户注销。这又有可能吗?我认为这个不那么重要,因为我已经写了一个补丁来阻止这种情况发生。
会话配置:
$config['sess_cookie_name'] = 'app';
$config['sess_expiration'] = 0;
$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'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_use_multisessions'] = TRUE;
$config['sess_multisession_expiration'] = 10;
答案 0 :(得分:1)
抱歉,我之前的回答。我错了。我不确定这两个配置设置,也无法在CI手册中找到。
$ config ['sess_use_multisessions'] = TRUE;
$ config ['sess_multisession_expiration'] = 10;
但是,这不会有任何问题。
请尝试将$ config ['sess_match_useragent']设为TRUE。
答案 1 :(得分:0)
您是否将会话存储在数据库(ci_sessions
表)中?尝试将user_agent
的字段类型更改为mediumtext
。 1}}默认情况下,某些用户代理字符串较长,这可能会导致注销。
答案 2 :(得分:0)
我已将配置设置$config['sess_time_to_update'] = 300;
更改为$config['sess_time_to_update'] = 8400;
它的行为比以前更好了。通过执行此操作,您可能会遇到安全问题,因为会话需要很长时间才能更新,直到更新会话ID仍然存在相同。
更多我也在寻找一个完美的解决方案,我也像在stackoverflow上的许多其他线程一样为ajax工作,但这对我不起作用。
在数据库(ci_sessions table
)中,我还将user_agent
的字段类型更改为text
,它也不适用于我。