如何解决Laravel Route:dispatch使用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密钥,或具有文件驱动程序的新文件。 但是,一切工作正常,它只是向新的会话密钥/文件发送垃圾邮件,而不是始终保存相同的文件。 如果我删除了EncryptCookie,它可以解决此问题,仅使用一个文件,每次请求后不再有文件...
如何在启用EncryptCookies的情况下解决此问题?
解决方法
问题已解决,问题在于源代码有:
\ App \ Http \ Middleware \ EncryptCookies :: class, \ Illuminate \ Cookie \ Middleware \ AddQueuedCookiesToResponse :: class, \ Illuminate \ Session \ Middleware \ StartSession :: class,
和请求也具有这些中间件。 两次使用加密/启动会话似乎可以做到这一点。
简单的解决方案是使用Route:dispatch在源代码之前删除这些中间件,但将其保留在Request中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。