laravel session 自動更新疑惑

來源:互聯網
上載者:User
關鍵字 laravel5.2.9 php
1.在登入的時候儲存 session (userSession);

2.登入後編輯登入使用者資訊,編輯完成後並沒有重新更新userSession;

3.但是在中介軟體裡,擷取session的時候卻可以得到編輯後的資訊 (擷取方式:session('userSession'));

不明白這裡是為什嗎?還是在前邊處理的時候哪裡有問題....

求解!

回複內容:

1.在登入的時候儲存 session (userSession);

2.登入後編輯登入使用者資訊,編輯完成後並沒有重新更新userSession;

3.但是在中介軟體裡,擷取session的時候卻可以得到編輯後的資訊 (擷取方式:session('userSession'));

不明白這裡是為什嗎?還是在前邊處理的時候哪裡有問題....

求解!

找到一遍文章 裡邊這樣寫:

查看調用相關的代碼。laravel編譯後,在bootstrap/compiled.php中

        class Middleware implements HttpKernelInterface          {              ...              public function handle(Request $request, $type = HttpKernelInterface::MASTER_REQUEST, $catch = true)              {                  $this->checkRequestForArraySessions($request);                  if ($this->sessionConfigured()) {                      $session = $this->startSession($request); // 啟動session                      $request->setSession($session);                  }                  $response = $this->app->handle($request, $type, $catch); // 調用controller的method                  if ($this->sessionConfigured()) {                      $this->closeSession($session);         //關閉session                      $this->addCookieToResponse($response, $session);                  }                  return $response;              }              ...                       protected function closeSession(SessionInterface $session)              {                  $session->save();    // 儲存session                  $this->collectGarbage($session);              }          }  

可以看見,在調用完controller之後,調用了session->save()的方法,來主動的儲存session。這樣session才能落地儲存起來,如果在controller或者view裡面寫了exit;,那麼session是不會被儲存的,除非主動的寫Session::save()才能手工的儲存起來。(如果不知道函數調用情況,可以在controller中throw new Exception();,然後在/config/app.php的debug更改為debug=>true。可以看到函數的調用關係。)

但是原理還是不明白!!!因為測試的結果 並不是調用完每個controller 都會修改session。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.