我試圖阻止用戶在ASP.NET MVC中註銷後在所有瀏覽器中單擊後退按鈕。這是一個已知的問題,但是我發現的所有解決方案都建議我通過在'no-cache'上設置'Cache-Control'來禁用緩存。我不想禁用緩存,因爲我的系統比較龐大,需要緩存。如何防止用戶在登錄asp.net mvc後啓用緩存後單擊後退按鈕
0
A
回答
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)作爲自定義字符串的一部分返回。然後,當用戶註銷時,他們將無法獲得緩存副本,因爲它不再屬於他們。但是,這實際上更重要,以防止在多個登錄的用戶之間共享已認證的頁面。如果您正在緩存經過身份驗證的頁面,並且不會被用戶改變,那麼您可能會將私人信息提供給錯誤的用戶。
總而言之,解決方案不是阻止後退按鈕,反正不是萬無一失。解決方案是正確設計您的應用程序,以便用戶返回時無關緊要。
相關問題
- 1. 如何防止後退按鈕到用戶登錄後的最後一頁
- 2. 防止用戶FOM重新登錄註銷後通過點擊後退按鈕
- 3. 如何在用戶登出後停止後退按鈕
- 4. 如何防止用戶在使用後退按鈕成功登錄後返回登錄頁面
- 5. Facebook「登錄」按鈕在登錄後可見後點擊後退按鈕
- 6. 單擊後退按鈕時,防止Safari高速緩存從緩存中加載
- 7. 單擊後退按鈕後防止重新填充表單域
- 8. mvc,如何防止點擊瀏覽器的後退按鈕?
- 9. 防止後退按鈕
- 10. 如何在用戶登錄後防止返回按鈕登錄頁面
- 11. 如何在單擊停止按鈕後啓用開始按鈕
- 12. 上後退按鈕緩存問題註銷後點擊
- 13. 如何防止單擊後退按鈕後重新填充表單域?
- 14. 如何防止用戶在按下後退按鈕時退出應用程序
- 15. 如何在使用後退按鈕時防止Safari ios移動緩存?
- 16. 用戶登錄成功後不要重定向後退按鈕
- 17. 單擊後退按鈕後處理GUI
- 18. 如何啓用後退按鈕在Android
- 19. 如何緩存後退按鈕
- 20. 防止登錄活動中的後退按鈕
- 21. 防止Safari 5中的後退按鈕上的緩存
- 22. 如何清除瀏覽器緩存用戶註銷後,以防止通過「後退」按鈕
- 23. 如何在用戶停止單擊按鈕後調用函數?
- 24. 一鍵點擊後禁用按鈕,防止多重提交,重啓後啓用
- 25. 當用戶點擊瀏覽器的後退按鈕後成功登錄後,不應出現「登錄」頁面
- 26. 防止用戶在註銷後使用後退按鈕訪問上一頁
- 27. 防止用戶點擊單選按鈕嘗試完成後
- 28. 製表符和後退按鈕。如何防止用戶退出應用程序
- 29. 如何防止瀏覽器後退按鈕點擊閃爍
- 30. 如何防止瀏覽器的後退按鈕被點擊?