更新:我的问题与Laravel会话无关,是我的Service Worker导致会话混乱!虽然我仍然不明白为什么服务工作者对于带有相同代码的其他主机名可以使用,但是禁用它之后,会话现在可以正常使用了!如果其他任何人在会话问题上迷路,并且不立即考虑他们拥有的任何服务工作者,将保留此内容。
自从迁移到Laravel 5.2以来,我一直遇到Session::flash
及其后使用Session::keep
的会话持久性问题。
我知道我应该使用web
中间件组,而且确实如此。但这并不能解决我的问题。请看下面:
app / Http / Kernel.php
protected $middlewareGroups = [
'web' => [
...
\Illuminate\Session\Middleware\StartSession::class,
]
];
app / Http / routes.php
Route::get('test', function(Request $request) {
$request->session()->flash('test_flash', "Some value");
return redirect('/flashed');
});
Route::get('flashed', function(Request $request) {
$request->session()->reflash();
return redirect('/flash-kept');
});
Route::get('flash-kept', function(Request $request) {
var_dump($request->session()->get('test_flash'));
});
我第一次点击/test
时它重定向到/flash-kept
的{{1}}的值为test_flash
-但是我第二次点击它时,它又重定向了,但是这次正确的价值!这是一致的,因为每次我加载其他任何页面,然后加载NULL
时,它都不会保留Flash消息,只有第二次点击它。
有人可以看到任何错误吗?
这是在运行/test
的Debian机器上发生的,非常有趣的是,我无法在运行PHP 5.6.30
的macOS的本地机器上复制此行为-但我也不认为它是PHP版本,因为我很快尝试将本地计算机降级以使用PHP 5.6,但仍然无法重新创建该问题!过去几个小时,我一直在盯着这个看,看不到任何错误!