Laravel会话数据被重写

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (3)

我发生了一个奇怪的情况。这是我的代码:

public function getHomepage(Request $request){
    $data['testimonials'] = $this->getTestimonials();
    session()->put('location', 'north_america');
    \debugbar()->info('UPDATED SESSION');
    session()->save();
    return view('site.index')->with('data', $data);
}

public function getGlobalPage(Request $request){
    $data['testimonials'] = $this->getTestimonials();
    if(session()->has('location')){
        session()->forget('location');
    }
    session()->put('location', 'global');
    session()->save();
    return view('site.global')->with('data', $data);
}

public function getFeaturesPage(Request $request){
    //\debugbar()->info($request);
    //echo session()->get('location');
    return view('site.features')->with('data', []);
}

这是发生了什么。当我转到“主页”页面时,“location”的会话变量将返回“north_america”。那很好。

如果我从“主页”页面移动到“全局”页面,则“位置”的会话变量将返回“全局”。这也很好。

如果我然后从“全局”页面移动到“功能”页面,则“位置”的会话变量将返回“north_america”。它没有设置为null或其他东西,它似乎被重写。怎么会发生这种情况?

以下是路线:

Route::get('/', ['as' => 'site.home', 'uses' => 'Site\SiteController@getHomepage']);
Route::get('features', ['as' => 'site.features', 'uses' => 'Site\SiteController@getFeaturesPage']);
Route::get('global', ['as' => 'site.global', 'uses' => 'Site\SiteController@getGlobalPage']);
提问于
用户回答回答于

弄清楚了。当浏览器试图获取丢失的图像时,它正在接收图像的302重定向。即使浏览器页面没有移动,这也正在改变会话变量。

扫码关注云+社区

领取腾讯云代金券