cakephp - 同一域中不同 Cakephp 实例的多个 session

标签 cakephp

您是否知道,如果您在同一域中的 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/

相关文章:

ruby-on-rails - 在 Rails 中生成 CakePHP 密码

mysql - 如何从 mysql 设置 cakephp 单选按钮?

linux - 自动从临时文件夹 [CakePHP] 中删除文件

mysql - 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert?

session - RPX 代币 URL 问题

php - 在 CakePhp 中,如何只从我的数据库中检索一列?

php - 如何使 CakePHP 重定向到不同的操作/ Controller ?

php - 间接修改重载属性-cakephp

url - CakePHP 绝对图像 URL

php - cakePHP 示例中的插件