【发布时间】:2017-12-31 16:55:49
【问题描述】:
我在使用 Chris Kacerguis 的 CodeIgniter REST 服务器时遇到了一个相当奇怪的问题。
问题:
1) 我没有加载 CodeIgniter 会话库,即使这样,每次我向我的 REST Api 发出 HTTP 请求时,都会在 ci_sessions 数据库表中创建新条目。
2) 在每次 HTTP 请求时,都会在数据库中创建一个全新的条目(并且不会更新旧条目),即使 IP 地址保持不变也是如此。
这是我的 config.php 文件:
$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 0;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = TRUE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = TRUE;
$config['cookie_prefix'] = '';
$config['cookie_domain'] = '';
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = FALSE;
我尝试了以下几种方法:
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 0;
$config['sess_regenerate_destroy'] = FALSE;
和
$config['cookie_domain'] = '.mydomain.com';
但没有任何效果。
这是正常现象还是某种错误?我究竟做错了什么?其他人有同样的问题吗?
另一件事是,我在 vanilla CodeIgniter 中没有遇到这个问题。在那里,一切正常,如预期的那样。
更新
我在解决问题的第二部分时发现了一些东西。
在发出第一个 HTTP 请求时,在数据库中创建了两个会话条目 - 一个用于客户端,另一个用于 REST 服务器。从第二个请求开始,cookie 的客户端“版本”正在更新,而服务器“版本”正在重新生成。
【问题讨论】:
-
检查自动加载?
-
已经检查并再次检查。会话不存在。
-
您用于执行 REST API 的任何库都可能正在使用会话。
-
好点。我正在检查那个并回复你。
-
感谢我的朋友。我完全错过了你提到的图书馆部分。是的,这就是问题所在。我正在使用@BenEdmunds 的 Ion Auth 库,Ion_auth.php 库文件在其中加载 CI 会话。
标签: mysql codeigniter session codeigniter-restserver