Kohana 3.2在每个请求上重新生成会话ID

时间:2011-08-23 04:33:52

标签: kohana-3

我希望这还没有得到解答,我已经看了一段时间并且没有真正看到答案。

我正在使用Kohana 3.2会话和数据库驱动程序。问题是每次加载或刷新页面时,都会创建一个新的会话ID。

我在我的bootstrap中设置了Session :: $ default ='database'。我的会话配置如下所示:

return array(
    'database' => array(
        /**
         * Database settings for session storage.
         *
         * string   group  configuation group name
         * string   table  session table name
         * integer  gc     number of requests before gc is invoked
         * columns  array  custom column names
         */
        'name'     => 'trucero_session',
        'lifetime' => 1200,
        'group'    => 'default',
        'table'    => 'sessions',
        'gc'       => 500,
        'columns'  => array(
            /**
             * session_id:  session identifier
             * last_active: timestamp of the last activity
             * contents:    serialized session data
             */
            'session_id'  => 'session_id',
            'last_active' => 'last_active',
            'contents'    => 'contents'
        ),
    ),
);

提前谢谢。

2 个答案:

答案 0 :(得分:1)

我不认为Laurent真的理解你的问题,因为在页面刷新之间应该只创建和使用一个会话ID - 这就是拥有会话的重点,这样你每次都可以重新使用同一个会话你访问一个页面。

当您使用新浏览器打开页面,或关闭现有浏览器然后打开新浏览器或销毁当前会话(如通过从页面注销)然后创建新会话ID时,会创建新会话ID新的(..by登录)。

但我确实在Kohana 3.2中发现了类似的问题,其中我的脚本每次读取页面时生成多个会话ID,并且会话未被“读取”回来,因为在每次页面刷新/访问时都创建了新的session_id。我能够将这个问题跟踪到谷歌Chrome浏览器(在我的情况下),在挖掘后我找到了这篇文章:

http://forum.kohanaframework.org/discussion/10303/session-problem-with-ie-and-chrome/p1

这基本上说你必须将Cookie :: domain设置为FALSE或特定域,以便Kohana数据库会话在Chrome和IE中正常工作。

答案 1 :(得分:0)

您不能依赖会话ID,因为它确实在每次请求时重新生成。如果您需要某种ID,则必须使用自定义ID。