同一域中Cakephp的不同实例的多个会话

时间:2013-12-23 13:33:59

标签: cakephp

您是否知道如果您在相同域中的Cakephp中运行同一应用程序的多个实例,它们将共享同一个会话?例如,假设您运行的实例为:

www.example.com/instance1和www.example.com/instance2

如果您登录第一个实例并访问instance2,您将看到您已经登录。这是因为Cakephp默认情况下使用PHP会话存储机制。

如果这不是您期望的行为,Cakephp允许您从会话处理方法的三个选项中进行选择:php(默认),cake和database。当前方法存储在app / config / core.php中的Session.save变量中。

将方法从php更改为cake将使Cakephp将Session变量存储在app / tmp / sessions目录中。如果您这样做,请记住创建并为此目录提供适当的权限。

Voilá,您需要做的就是为每个Cakephp实例分别设置Sessions。

1 个答案:

答案 0 :(得分:4)

请打开core.php&更改应用程序cookie路径,然后会话将根据应用程序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  
    ));