2017-09-26 80 views
0

我正在努力確定用戶何時註銷,以便當他們在一個頁面上註銷時,他們會被帶到所有頁面的登錄頁面。爲了檢驗這一點,我使用的服務器發送的事件有一個循環,如下所示:Laravel:無需重新加載驗證身份驗證

// check for new notifications every 2 seconds 
$poller->loop(function ($every) use ($poller) { 
    $poller->write("check", Auth::check()); 
    if (!Auth::check()) { 
     $poller->throwError("out", "You are no longer logged in!"); 
    } else { 
     $poller->pingNotifications(); 
    } 
}, 2); 

我已經但是注意到laravel似乎只在頁面是怪異的負載評估Auth::check()。我做了這個觀察,因爲即使從另一個選項卡上的頁面註銷,ping「檢查」也不會改變。

有沒有辦法解決這個問題,或者這只是laravel的性質?如果是這樣,當您考慮除了使用AJAX之外的認證檢查時,會想到什麼樣的想法。

+0

所以你只是想將它們重定向到登錄,一旦他們的會話已過期? – ggg

+0

這是正確的@ggg – Shawn31313

回答

0

只要你可以採取一個方向......使用會話數據庫驅動的laravel店時最容易在它的用戶ID你...

由於每個會話是在數據庫中的記錄...如果你刪除所有會話,其中user_id =當前用戶ID ini您的/註銷路線,所有您的會話將過期...

+0

會話,就像Auth在循環時不變。看起來這些都需要頁面加載。 – Shawn31313

+0

當你確定循環時,它不會改變,什麼會導致它改變?您的請求建立了會話...然後在下次請求之前沒有任何更改...所以當您註銷時,您會終止會話以及您記錄的任何其他會話。這裏的投票將不會做任何事情,因爲沒有什麼會改變......您必須在註銷路線中捕獲它...... – Serge

1

沒有使用ajax(它甚至仍然會有點麻煩),唯一真正的選擇是重定向用戶註銷時註銷腳本(這將轉儲會話數據)。從那裏,通過Auth中間件路由所有需要通過身份驗證的用戶的路由,如果他們沒有登錄,他們將被引導到登錄頁面。 Laravel非常適合這種情況,因爲您可以在路由文件中定義路由「組」,或根據控制器的需要,專門針對某個方法調用中間件。

+0

因此,從一個選項卡上的註銷腳本中,我可以自動將該頁面重定向到另一個選項卡上? – Shawn31313