对于每个请求,在Yii应用程序中生成新会话

时间:2012-11-02 08:11:35

标签: yii

我知道我要么正在跳过某些内容,要么错误地配置了会话,但Yii会话对我不起作用。我花了很多时间进行调试和搜索,但没有得到任何具体的答案。

如文档和互联网上的教程所述,我已将应用程序会话配置如下:

'components'=>array(
    'user'=>array(
    // enable cookie-based authentication
    'allowAutoLogin'=>true,
    ),
    'session' => array (
    'sessionName' => 'Site Session',
    'class'=>'CHttpSession',
    'useTransparentSessionID'   =>($_POST['PHPSESSID']) ? true : false,
    'autoStart' => 'true',
    'cookieMode' => 'allow',
    'timeout' => 300
),

但是每次我向服务器发送请求时,都会得到一个新的会话对象。我通过echo "Session id: ".Yii::app()->session->sessionID;验证了相同,每次它给我不同的ID。此外,由于此行为,我之前在会话中添加的变量也无法访问。

请提供一些指示,我花了4个多小时进行调试并寻找解决方案。非常感谢任何提前指示。

谢谢

〜塔伦

4 个答案:

答案 0 :(得分:2)

很可能只是你的会话名称中有空格。

我刚刚对我的Yii实例进行了快速测试,将会话名称更改为其中有空格,并且会话的cookie值似乎每次都会更改。

答案 1 :(得分:1)

请在此网址http://php.net/manual/en/function.session-name.php

上阅读php会话名称文档

它明确提到会话名称应仅包含字母数字字符。它也应该包含至少一个字母(会话名称也不能将其所有字符都作为数字)。否则,每次都会生成一个新的会话ID。

答案 2 :(得分:0)

chrome 44和chrome 47的错误,将其更新为51,没关系。

答案 3 :(得分:0)

请注意,因为我在Yii2中遇到了这个问题。我有一个常量COOKIE_DOMAIN,该常量是通过php-fpm config设置的,它用于错误的域名,导致会话重置。确保将其设置为“ .example.com”(包括开头的。以支持所有主机名)

'components'=>[
    'session' => [
            'class' => 'yii\web\DbSession',
            'cookieParams' => [
                'path' => '/',
                'domain' => COOKIE_DOMAIN, // <<<--- check this 
                'secure' => true,
            ],
            'writeCallback' => function($session){
                return [
                    'user_id' => Yii::$app->user->id
                ];
            },
            'sessionTable' => 'session', // session table name. Defaults to 'session'.
        ],
...
]