如果用戶登錄,那麼ajax請求正常工作。當會話失效時,ajax返回登錄屏幕,用戶可以將登錄屏幕視爲ajax內容。是否有可能在Ext Js中添加自定義代碼,這將在每個Ajax請求中運行,以檢查會話是否仍然有效,如果會話無效,則JavaScript將重定向到登錄頁面,否則它將繼續正常執行Ajax請求。是否可以在每個Ajax請求中執行自定義代碼而無需手動將該代碼添加到Ext Js中的每個ajax代碼?
0
A
回答
2
Ext.ajax是一個單例,因此您可以爲所有請求錯誤定義全局處理程序。
如果用戶未被授權,則您的服務器端代碼將需要返回HTTP 403或類似信息。將這個地方(僅一次)在你的代碼代碼:
Ext.Ajax.on('requestexception', function(conn, response, options) {
if (response.status == 403) {
Ext.MessageBox.alert('Authentication', 'You are not logged in.');
/* you can display a login box or something here */
}
};
如果一個AJAX請求失敗,因爲會話已過期,你可以在你的代碼優雅地處理它。
options參數包含AJAX請求選項,因此如果向用戶顯示登錄框並對其進行重新認證,則可以重新提交他們自動創建的原始AJAX請求。這個過程對於所有其他現有代碼都是無縫的,這些代碼會發出AJAX請求。
1
檢查會話是否仍然有效應在服務器中完成。不在JavaScript中。
我們不相信客戶。
0
你可以修改你的Ajax過程有兩種方式:
1服務器端:在接收到的請求,檢查會話 - 如果沒有登錄或會話過期的用戶,返回一個HHTP 403(=未授權)。 2-客戶端:作爲ajax響應處理程序的一部分,檢查錯誤403.如果返回,請求登錄並將其發送到服務器,然後當登錄成功時,重新發送原始請求。
這很簡單,如果你不使用太多現成的ajax庫。如果你是,看看它的功能。
相關問題
- 1. 在每個請求上執行代碼
- 2. 對每個請求執行代碼
- 3. 每個請求代碼
- 4. 這個JS代碼是否等待AJAX請求完成?
- 5. 在ASP.NET MVC的每個請求上執行代碼
- 6. PHPUnit:每個請求404代碼
- 7. Grails - 跨控制器代碼,在每個請求上執行
- 8. WhatsApp的API請求代碼不執行,而不是返回請求的代碼
- 9. 爲ASP.NET的每個請求(aspx和cshtml)執行一些代碼
- 10. JS代碼通過ajax不執行
- 11. 將代碼添加到代碼中,matlab
- 12. 將自定義代碼添加到joomla
- 13. Grails的執行代碼每個環境
- 14. CakePHP的添加常用代碼爲每個請求
- 15. IIS - 爲每個請求執行腳本/代碼片段
- 16. AJAX代碼沒有執行
- 17. Ajax代碼沒有執行
- 18. 在CRM中執行自定義代碼
- 19. Python:在代碼塊的每一行添加代碼例程
- 20. 如何使用jQuery代碼而不是EXT JS代碼
- 21. 執行代碼每x秒
- 22. Ruby:爲每個子類執行代碼
- 23. 爲每個新線程執行代碼?
- 24. 在代碼中添加新行代碼
- 25. 在Symfony 1.4中的每個動作之後執行代碼
- 26. 您可以打開一個拉取請求,將回購代碼添加到您的代碼中嗎?
- 27. EXT JS代碼到jQuery
- 28. 這個代碼是否會在每次迭代中被評估?
- 29. 爲每個枚舉器添加代碼
- 30. 是否可以在Visual Studio的每個過程之後添加代碼塊?
這是在服務器端完成的,但Ext Js就像JavaScript操作系統,所以它會更容易檢查會話是否在每個Ajax請求中自動生效,而不是爲每個Ajax請求編寫相同的代碼。 – newbie 2011-04-13 11:27:24
@newbie爲什麼要檢查客戶端?只需將一些中間件添加到服務器上的ajax處理程序,以檢查會話並在出現錯誤時返回登錄屏幕。 – Raynos 2011-04-13 12:35:56