【问题标题】:Laravel Route:dispatch create new session with EncryptCookieLaravel Route:dispatch 使用 EncryptCookie 创建新会话
【发布时间】:2020-12-21 11:27:24
【问题描述】:

我的代码是:

…
$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 密钥,或带有文件驱动程序的新文件。 但一切正常,它只是垃圾邮件新的会话密钥/文件,而不是始终保持相同的文件。 如果我删除 EncryptCookie,它会解决问题,只使用一个文件,每次请求后不再有文件...

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

【问题讨论】:

    标签: laravel laravel-middleware laravel-request


    【解决方案1】:

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

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

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

    简单的解决方案是使用 Route:dispatch 在源代码之前删除这些中间件,但保留在 Request 中。

    【讨论】:

    • 您愿意提供一下您是如何做到的吗?
    猜你喜欢
    • 2015-05-01
    • 2017-09-09
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 2015-04-26
    • 2016-08-07
    • 2018-03-05
    • 2011-01-19
    相关资源
    最近更新 更多