【问题标题】:Laravel Session Issue: Multiple session idsLaravel 会话问题:多个会话 id
【发布时间】:2015-04-26 01:42:55
【问题描述】:

我在一个项目中使用 laravel 会话 (4.2) 真的很糟糕。 每次重新加载它都会生成一堆会话文件(如果它被配置为文件)或数据库行(每个请求大约 20 行/文件),我不知道为什么。以下是我为解决此问题而采取的措施:

1)我检查了我的 php.ini 并且 session.gc_maxlifetime 是 1440。

2)我检查过脚本中没有提前打印。

3)我检查了 composer dump-autoload 没有解决问题。

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

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

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,

有什么提示吗?

【问题讨论】:

    标签: php session laravel


    【解决方案1】:

    Laravel 避免使用原生 php 会话实现,原因令人难以理解。

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

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

    【讨论】:

    • 感谢您的回复,但还没有解决问题。我不是在寻找会话 ID(laravel 和 php)之间的相等性。我的问题是 Laravel 会话 ID 在每次请求时都会不断刷新,因此我无法生成有状态操作。同时,我可以使用 php 本机会话正常进行操作。此外,这是一个跨计算机问题,因为当我将我的应用程序部署到服务器时,laravel 会话在重新加载时不断刷新。
    • 我注意到了同样的问题,但我从未找到解决方案。有时删除浏览器 cookie 数据并重新启动浏览器会有所帮助。但首先,请检查您对会话路径是否具有读/写权限。
    【解决方案2】:

    我很久以前就遇到过这个问题。经过几天的搜索,我发现了这个。 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');
        }
    

    这是我为克服这个问题所做的。希望对你也有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-23
      • 2014-12-08
      • 1970-01-01
      • 2011-07-07
      • 2012-08-19
      • 2011-01-14
      • 2015-12-18
      • 2013-02-04
      相关资源
      最近更新 更多