Deh*_*tth 5 middleware laravel laravel-5 laravel-5.1 laravel-5.2
在我的本地系统上一切正常,但在我们的测试系统上部署Laravel 5.2后,它看起来像是会话中间件坏了.有人可以帮忙吗?
Argument 1 passed to Illuminate\Session\Middleware\
StartSession::addCookieToResponse() must be an instance of
Symfony\Component\HttpFoundation\Response, boolean given, called in
... /httpdocs/service/vendor/laravel/framework/src/Illuminate/Session
/Middleware/StartSession.php on line 72 and defined
Run Code Online (Sandbox Code Playgroud)
全球中间件:
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\CORSMiddleware::class,
\LucaDegasperi\OAuth2Server\Middleware\OAuthExceptionHandlerMiddleware::class
];
Run Code Online (Sandbox Code Playgroud)
这个问题已经有一年了,但是在遇到同样的问题后我发现了这个问题.
在我的代码中的某些时候我使用过:
return
.
事实证明(正如你在handle方法的最后看到的那样)在执行handle方法后你应该总是调用 return $next($request);
小智 6
我在我的一个中间件 (v5.8) 中遇到了类似的问题。'在 null 上调用成员函数 SetCookie()', '将 CSRF 令牌添加到响应 cookie'
这是我的代码,在 5.2 中运行良好,但在 Laravel 5.8 中失败:
return view('pages.my_page')->with('data', $data);
Run Code Online (Sandbox Code Playgroud)
变成:
return response()->view('pages.my_page', ['data' => $data]);
Run Code Online (Sandbox Code Playgroud)
干杯!
小智 4
Illuminate\Session\Middleware\StartSession 类中的 addCookieToResponse 方法需要一个 Response 对象作为第一个参数。确保您在所有路线中都返回了一条。
这是一个可能的快速修复方法,请更改它以适合您的情况。
前:
Route::get('hi', function() {
return 'hi';
});
Run Code Online (Sandbox Code Playgroud)
后:
Route::get('hi', function() {
return response('hi');
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9471 次 |
最近记录: |