簡體   English   中英

是否可以在每個Ajax請求中執行自定義代碼,而無需將代碼手動添加到Ext Js中的每個ajax代碼中?

[英]Is it possible to execute custom code in every Ajax request without having manually add that code to every ajax code in Ext Js?

如果用戶已登錄,則ajax請求可以正常工作。 當會話無效時,ajax返回登錄屏幕,用戶可以將登錄屏幕視為ajax內容。 是否可以在Ext Js中添加自定義代碼,該代碼將在每個ajax請求中運行,以檢查會話是否仍然有效,如果會話無效,則JavaScript將重定向到登錄頁面,否則它將繼續正常執行Ajax請求。

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請求的所有其余現有代碼應該是無縫的。

在服務器中檢查會話是否仍然有效。 不在JavaScript中。

我們不信任客戶。

您可以通過兩種方式修改ajax流程:

1-服務器端:收到請求后,檢查會話-如果用戶未登錄或會話過期,則返回HHTP 403(=未授權)。 2-客戶端:作為ajax響應處理程序的一部分,檢查錯誤403。如果返回錯誤,則請求登錄並將其發送到服務器,然后在登錄成功后重新發送原始請求。

如果您不使用太多現成的ajax庫,那很容易。 如果是這樣,請查看其功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM