您是否知道,如果您在同一域中的 Cakephp 中运行同一应用程序的多个实例,它们将共享同一 session ?例如,假设您有实例运行在:
www.example.com/instance1 和 www.example.com/instance2
如果您登录第一个实例并访问实例2,您将看到您已经登录。发生这种情况是因为 Cakephp 默认使用 PHP Session 存储机制。
如果这不是您期望的行为,Cakephp 允许您从 session 处理方法的三个选项中进行选择:php(默认)、cake 和数据库。当前方法存储在 app/config/core.php 中的 Session.save 变量中。
将方法从 php 更改为 cake 将使 Cakephp 将 Session 变量存储在 app/tmp/sessions 目录中。如果您这样做,请记住创建此目录并为其授予适当的权限。
瞧,这就是您为每个 Cakephp 实例建立单独 session 所需要做的全部工作。
最佳答案
请打开 core.php 并更改应用程序 cookie 路径,然后 session 将根据应用程序 cookie 路径存储 对于 www.example.com/instance1
Configure::write('Session', array(
'defaults' => 'database',
'ini' => array(
'session.cookie_path' => '/instance1',
),
'cookie' => 'instance1',
'cookieTimeout' => 0,
'checkAgent' => false
));
对于 www.example.com/instance2
Configure::write('Session', array(
'defaults' => 'database',
'ini' => array(
'session.cookie_path' => '/instance2',
),
'cookie' => 'instance2',
'cookieTimeout' => 0,
'checkAgent' => false
));
关于cakephp - 同一域中不同 Cakephp 实例的多个 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20744651/