Laravel全局会话助手无法正常工作

时间:2017-10-21 17:58:38

标签: laravel-5

我使用Laravel版本5.4.36并且全局会话助手不再使用了。

这就是我所做的:当登录用户访问控制器功能时,我需要保存一些数据,当用户刷新(重新加载)页面时,我想保留该数据,但似乎全局会话助手没有做这个。我做错了什么?我的会话是基于文件的。 我跟着official doc,但遗憾的是没有帮助:)

使用$request->session()->put(...)存储数据在我的情况下是无用的,因为每当用户重新加载丢失的页面数据时。

use Illuminate\Http\Request;

class WatchController extends Controller{

     public function __construct(){
        $this->middleware(['auth']);
     }

    public function watchAds(Request $request){

       $userId = Auth::user()->id;

       if(!session('data')){

            echo "Data not set";
            $data = array(1,3,4,5);
            session(['data' => $data]);
            //Update, here it print data but if I do reload the page then always load this if section.
            $data = session('data');
            print_r($data);

       }else{

            echo "Data already set";
            $data = session('data');
            print_r($data);
       }
       exit;
    }
}

1 个答案:

答案 0 :(得分:2)

会话数据实际上是在请求生命周期的后期(搜索“可终结的中间件”)存储的,即使在将内容发送到用户浏览器之后也很晚。

但是代码中的exit;会立即结束PHP脚本,因此不会执行中间件的terminate方法。

更确切地说,您跳过执行terminate的{​​{1}}方法。