2017-02-23 93 views

回答

0

這不是一個完整的答案,但我使用這個JQuery來捕獲後退按鈕並從前一個視圖恢復分頁狀態。您可以使用它來驗證授權和重定向。

if (window.history && window.history.pushState) { 

    window.history.pushState('forward', null, ''); 

    $(window).on('popstate', function() { 
     window.location.replace("/" + returnURL); 
    }); 
} 
1

最終,您不能阻止用戶使用後退按鈕,您也不應該。您可以嘗試嘗試,但其中有解決方法,並且瀏覽器可以根據用戶的偏好設定。無論如何,這是鼓吹用戶的絕佳方式。

有兩個方面需要討論。首先,存在特定於瀏覽器的「緩存」。我在這裏使用引號,因爲我不是在談論傳統的瀏覽器緩存資源。舉例來說,Chrome通常會將先前渲染的頁面保留在內存中,因此,「返回」並不是技術上發出請求:它只是加載之前渲染的頁面。你不能做任何事情。如果問題在於用戶可能能夠在前一頁或類似內容上提交表單,這可以通過防僞令牌解決。

其次,存在用戶特定信息的服務器端緩存問題。如果您在經過身份驗證的頁面上使用OutputCache,則還應該使用VaryByCustom,並將有關該用戶的身份信息(例如id)作爲自定義字符串的一部分返回。然後,當用戶註銷時,他們將無法獲得緩存副本,因爲它不再屬於他們。但是,這實際上更重要,以防止在多個登錄的用戶之間共享已認證的頁面。如果您正在緩存經過身份驗證的頁面,並且不會被用戶改變,那麼您可能會將私人信息提供給錯誤的用戶。

總而言之,解決方案不是阻止後退按鈕,反正不是萬無一失。解決方案是正確設計您的應用程序,以便用戶返回時無關緊要。

相關問題