Laravel Route:dispatch 使用 EncryptCookie 创建新会话

Laravel Route:dispatch create new session with EncryptCookie

我的代码是:

…
$new_request = Request::create($page, 'GET', $request->all(), $request->cookie());
$router = Route::dispatch($new_request);
…

使用中间件

\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,

问题: 在 Route::dispatch 调用的每个请求上都会创建一个新会话(如果我之前退出,则在创建新会话后没有创建会话):带有 redis 驱动程序的新 Redis 密钥,或带有文件驱动程序的新文件。 但一切正常,它只是垃圾邮件新会话 keys/files 而不是始终保持相同的文件。 如果我删除 EncryptCookie,它会解决问题,只使用一个文件,每次请求后不再有文件...

如何在启用 EncryptCookies 的情况下解决这个问题?

问题已解决,问题是源代码有:

\App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class,

请求也有这些中间件。 使用 encrypt/startsession 两次似乎可以做到这一点。

简单的解决办法就是用Route:dispatch去掉源码前的这些中间件,但留在Request中。