Php Laravel包无法访问会话

Php Laravel包无法访问会话,php,laravel,Php,Laravel,我正在为cms系统开发laravel软件包。我最初在Laravel5.1中构建了它,它工作得很好,但现在我尝试在5.2中使用它,并且在会话数据方面遇到了问题 我面临的问题是,由于某种原因,我的包中的控制器无法访问会话数据 该软件包使用composer psr4提供 以下是我的服务提供商加载我的包路由时的引导方法: // Include routes if (!$this->app->routesAreCached()) { require __DIR__ . DIRECTOR

我正在为cms系统开发laravel软件包。我最初在Laravel5.1中构建了它,它工作得很好,但现在我尝试在5.2中使用它,并且在会话数据方面遇到了问题

我面临的问题是,由于某种原因,我的包中的控制器无法访问会话数据

该软件包使用composer psr4提供

以下是我的服务提供商加载我的包路由时的引导方法:

// Include routes
if (!$this->app->routesAreCached()) {
    require __DIR__ . DIRECTORY_SEPARATOR . 'coreRoutes.php';
}
这是我正在测试的路线之一:

Route::get('manager', [
    'as' => 'manager',
    'uses' => 'Cms\Controllers\CmsController@administrationPanel',
]);
这是控制器内的administrationPanel方法:

public function administrationPanel()
{
    var_dump(\Session::all());
    return view('Cms::front');
}
通过这个var_转储,我得到了一个空数组。但是,如果我在其中一个应用程序控制器中进行var_转储,就会得到一个填充的数组

有人知道为什么包控制器不能访问正常应用程序控制器可以访问的会话数据吗


我是否按错误的顺序加载内容?

自Laravel 5.2以来,
开始会话
中间件已从全局
$middleware
列表移动到中的
web
中间件组。这意味着,如果您需要对路由进行会话访问,您可以使用该中间件组。因此,您的路线定义如下所示:

Route::get('manager', [
    'middleware' => 'web',
    'as' => 'manager',
    'uses' => 'Cms\Controllers\CmsController@administrationPanel',
]);
如果您不想/不需要将所有其他中间件添加到该组(加密cookie、CSRF令牌验证等),您可以为会话设置一个简单的路由中间件,如下所示:

protected $routeMiddleware = [
    ...
    'session' => \Illuminate\Session\Middleware\StartSession::class,
];

有了它,您可以使用
会话
而不是
web
作为路由中间件。

谢谢Bogdan,我真不敢相信这就是我需要做的全部。花了几个小时想弄清楚发生了什么。真的很感激这个答案。这就是为什么。