在Laravel 5.3中,请求中未设置会话存储。

14 浏览
0 Comments

在Laravel 5.3中,请求中未设置会话存储。

我的网站出现了如下错误:\n\"enter\n我尝试过一些解决方案,比如在中间件web中包裹路由,但都没有成功。\n以下是我的 Kernel.php 文件内容:\n

 [
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            \Illuminate\View\Middleware\ShareErrorsFromSession::class,
            \App\Http\Middleware\VerifyCsrfToken::class,
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \anlutro\LaravelSettings\SaveMiddleware::class,
            \Barryvdh\Cors\HandleCors::class,
            Activated::class
        ],
        'api' => [
            'throttle:60,1',
            'bindings',
        ],
    ];
(文件的其余部分)
    }

\n我该如何解决这个问题 :((

0
0 Comments

问题原因:在Laravel 5.3中,如果在请求中没有设置会话存储,则会出现"Session store not set on request"的错误。

解决方法:创建一个中间件,并将其包含在应用的中间件堆栈中。

具体步骤如下:

1. 在命令行中运行以下命令,创建一个中间件:

php artisan make:middleware AnyNameYouWant

2. 在生成的中间件文件中,找到handle方法,并添加自己的逻辑。然后,使用redirect函数将请求重定向到所需的位置。

3. 在应用的middleware配置文件中(一般为app/Http/Kernel.php),将刚创建的中间件添加到web中间件组中。具体添加方法是在数组中的web键下面加上中间件类的引用。

4. 保存并关闭文件。

通过以上步骤,我们可以解决"Session store not set on request"的问题。希望这对您有所帮助。

0
0 Comments

在Laravel 5.3中出现(Session store not set on request)这个问题的原因可能是因为routes没有添加到web middleware中。解决方法是在Kernel.php文件的$middleware数组中添加以下代码:

protected $middleware = [
    //...
    \Illuminate\Session\Middleware\StartSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
];

这样做可以确保会话(session)的存储(session store)被正确设置在请求(request)中。

0
0 Comments

在Laravel 5.3中,如果需要使用会话状态(session state)、CSRF保护等功能,需要使用web中间件。下面是如何配置web中间件的示例代码:

在路由文件中,使用Route::group()方法将需要使用web中间件的路由包裹起来:

Route::group(['middleware' => ['web']], function () {
    // 这里写你的路由
});

接下来,在kernel.php文件中,将需要使用的中间件添加到$middleware和$middlewareGroups属性中,其中包括StartSession中间件来启动会话:

protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \Illuminate\Session\Middleware\StartSession::class,
];
protected $middlewareGroups = [
    'web' => [
        \App\Http\Middleware\EncryptCookies::class,
        \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
        \Illuminate\View\Middleware\ShareErrorsFromSession::class,
        \App\Http\Middleware\VerifyCsrfToken::class,
        \Illuminate\Routing\Middleware\SubstituteBindings::class,
        // 其他中间件...
    ],
];

如果遇到了"Session store not set on request"的问题,可以尝试以下解决方法:

1. 确保在路由文件中使用了web中间件,将需要使用会话状态的路由包裹起来。

2. 检查kernel.php文件中的$middleware和$middlewareGroups属性,确保StartSession中间件被添加到了$middleware属性中,并且web中间件被添加到了$middlewareGroups属性中的'web'数组中。

3. 如果以上方法都没有解决问题,可以尝试运行"composer dump-autoload"命令来重新加载类的自动加载文件。

希望以上方法能够帮助解决问题,并让你的应用正常使用会话状态和CSRF保护功能。

0