Laravel会话问题:多个会话ID

时间:2015-02-24 12:23:15

标签: php session laravel

我在一个项目中的laravel会话(4.2)真的非常糟糕。 每次重新加载它都会生成一堆会话文件(例如它配置为文件)或数据库行(aprox。每行请求20行/文件),我无法弄清楚原因。以下是我为解决此问题而采取的行动:

1)我已经检查了我的php.ini,session.gc_maxlifetime是1440。

2)我已经检查过脚本中没有早期打印。

3)我已经检查过composer dump-autoload无法解决问题。

4)我已经检查过原生PHP会话是否正常并且持续存在。

5)我已经使用了laravel migration来生成会话表(所以它不是列类型的问题)。

6)我删除了我的供应商文件夹并锁定了文件并执行了作曲家安装。

事情是,我昨天回家并拉了一个新的laravel项目,会议工作得很好。到底能发生什么事? 为了澄清,我有一个带有动作的控制器: public function getIndex() { var_dump(Session::getId()); Session::save(); session_start(); var_dump(session_id()); die('die'); }

打印:

string '4505ed48069f6c468c5d3a3c1c6e6094db8d989d' (length=40)
string 'b24gbst01gdulo77o4utfq6id2' (length=26)
die

当刷新时,保留了php本地会话ID,但laravel id每次都不同。

这是我的laravel session.php:

'driver' => 'file',
'lifetime' => 120,
'expire_on_close' => false,
'files' => storage_path().'/sessions',
'connection' => 'mysql',
'table' => 'sessions',
'lottery' => array(1, 1000),
'cookie' => 'laravel_session',
'path' => '/',
'domain' => 'mydomain',
'secure' => false,

任何提示?

2 个答案:

答案 0 :(得分:1)

Laravel避免使用本机php会话实现,原因是无法理解。

laravels session和php natives session之间的会话ID不匹配,可以安全地忽略。

我见过类似的问题,通常可以通过删除浏览器cookie /会话缓存并重新启动浏览器来解决。 (是的,这是2015年,我们正在这样做,上帝帮助我们。)

答案 1 :(得分:0)

很久以前我遇到过这个问题。经过几天的搜索,我发现了这一点。 laravel generateSessionId函数存在问题。你可以在这里找到这个方法crm / vendor / laravel / framework / src / Illuminate / Session / Store.php .. line:171

protected function generateSessionId()
    {
//      return sha1(uniqid('', true).str_random(25).microtime(true));
            return md5('Getpikk');
    }

这是我在这个问题上要克服的。我希望它对你也有所帮助。