我之前读过这篇文章: 一般将管理员和网络应用程序分成两个实体
基本上它的要点是我们可以将事物的 api 端和事物的 Web 前端结合在一个 cakephp 应用程序中。但是,正如您所知,REST 是无状态的,没有理由期望客户端保留 cookie 或类似的东西。你们知道CakePHP 中session_start 函数究竟是什么时候触发的吗?当我的 API 端点被命中时,我真的想避免运行 session_start。但是,当我的常规网络前沿受到打击时,我需要开始会话。
我之前读过这篇文章: 一般将管理员和网络应用程序分成两个实体
基本上它的要点是我们可以将事物的 api 端和事物的 Web 前端结合在一个 cakephp 应用程序中。但是,正如您所知,REST 是无状态的,没有理由期望客户端保留 cookie 或类似的东西。你们知道CakePHP 中session_start 函数究竟是什么时候触发的吗?当我的 API 端点被命中时,我真的想避免运行 session_start。但是,当我的常规网络前沿受到打击时,我需要开始会话。
对于 cake v2+,一般不要执行以下任何操作:
如果您仍在启动会话(可以通过在响应标头中获取 cookie 来判断),那么很容易追踪谁正在启动会话。只需lib/Cake/Model/Datasource/CakeSession.php
在start()
方法中添加以下行:
public static function start() {
debug_print_backtrace();
exit();
...
}
提出请求,您将看到谁是罪魁祸首的调用堆栈:)
session_start()
被触发CORE\Cake\Model\Datasource\CakeSession.php
。如果您不想触发 session_start(),请确保不要在控制器中包含会话组件或助手。另外,请务必不要调用 session 或使用 Auth 组件,因为它session_start()
在某些情况下也会自动触发。