2014-09-24 98 views
0

目前,如果我在我的webapp中閒置了足夠長的時間,會話過期。再次進行交互時,我會收到一個錯誤屏幕,通知我會話超時而不是將我重定向到主頁。會話過期後Laravel重定向不工作

在我的routes.php文件的文件我用這:

Route::filter('authenticate', function() { 
    if (!Session::has('user') && Session::get('user')->id) { // return true if user not logged 
     return Redirect::to('/'); 
    } 
}); 

是我的邏輯錯了嗎?

回答

0

你的表情永遠不會評估爲真。你基本上是用英語說的:

如果在與「用戶」的密鑰對會話沒有價值,以及與用戶的密鑰對會話值有一個id,然後做...

有一個會話值有一個密鑰'User'或沒有,但你不能有兩種方式。我想你想說的是這樣的,而不是:

if (!Session::has('user') || !Session::get('user')->id) 

這會在兩種情況下執行重定向:

  1. 當有「用戶」的關鍵底下沒有會話值,
  2. 當值的「用戶」會話id值參數的計算結果爲假
+0

出於某種原因,你的解決方案保持在日誌重定向但是它確實與if(!Session :: has('user')) – Rhadley 2014-09-24 19:48:40

+0

一起工作,如果用戶鍵中的條目在「id」屬性中沒有值 – 2014-09-24 20:09:21