具有自己的会话实现的框架如何处理第三方?

时间:2017-02-02 08:34:39

标签: php wordpress laravel session cakephp

我看到很多框架和CMS使用自己的会话实现而不是本机PHP会话驱动程序。一切都是出于他们自己的原因。

这些例子包括Wordpress,Laravel,CakePHP(有点)。

我想知道的是,如果他们手动设置cookie并自己进行会话处理,他们如何处理第三方包?

第三方作曲家包可能会与默认$_SESSION进行交互,并且可能尝试设置会话变量,而$_SESSION完全不使用。

仍然使用Laravel这样的框架,我记得它仍然可以与第三方软件包进行完美的交互,并将它们全部放入自己的会话实现中。

很想知道可能对此有一些经验的人。

修改

第三方包的一个例子可能是一个php调试栏,它可以从$ _SESSION读取并在需要时插入它自己的变量。我知道像Laravel这样的框架有自己的调试条实现,不与本地$_SESSION交互。

我想我想知道完全运行你自己的$_SESSION实现是否可行,而不会有太多麻烦。

1 个答案:

答案 0 :(得分:1)

这可能不是一个完美的答案,但这至少是我在处理自定义会话实现时所发现的。最新的Laravel安装。

在Laravel 5.6 $_SESSION全局不存在没有会话存在但是当使用Session::all()时它返回会话的标记。这是合乎逻辑的。

Route::get('/', function () {
   dump(Session::all());
   dd($_SESSION);
   return view('welcome');
});

返回

array:3 [▼
  "_token" => "G22ETumV1CQoolo2sAV0SA4wWmxFrZjTXTli7ico"
  "_previous" => array:1 [▼
    "url" => "http://127.0.0.1:8000"
  ]
  "_flash" => array:2 [▼
    "old" => []
    "new" => []
  ]
]

dd

ErrorException in web.php line 16:
Undefined variable: _SESSION

根据我自己的测试,我的结论是,如果与Sessions交互的作曲家包没有实现Laravel ServiceProvider,它就无法对会话做任何事情。

希望这是有帮助的回应。