EXT JS - 我想知道如何檢查會話時間JSON響應了一樣,如果一個用戶空閒的說20分鐘左右,如果他的會話過期或不Ext JS的會話超時
0
A
回答
1
有並不是在ExtJS中處理會話超時的標準方法。 ExtJS是一個客戶端庫,用於創建應用程序的用戶界面/前端層,而會話管理則在服務器端進行。
ExtJS Ajax請求實現回調機制。這意味着某個Javascript函數被指定爲回調函數,當Ajax請求完成(成功或失敗)時調用該函數。下面是ExtJS API Documentation採取的例子 - 見參數成功和失敗的定義回調函數:
// Basic request
Ext.Ajax.request({
url: 'foo.php',
success: someFn,
failure: otherFn,
headers: {
'my-header': 'foo'
},
params: { foo: 'bar' }
});
所以,在會話超時的情況下,可以(例如)構造一個JSON響應,其中將包含一些錯誤代碼(由您定義)以及要顯示給用戶的錯誤消息。然後回調函數應該檢查這個錯誤是否從服務器返回,並在發生時採取必要的操作(顯示錯誤消息,重定向到登錄頁面等)。
請注意,在上述情況下,從ExtJS的角度來看,Ajax請求實際上會成功。當HTTP請求完全失敗時(HTTP錯誤如403等),Ajax請求被認爲是不成功的。這很重要,因爲通常可以爲成功和不成功的請求定義不同的回調函數(如上面的示例代碼所示)。
1
你可以嘲笑超時會話...
var keepaliveHandler = new Ext.util.DelayedTask(function(){
Ext.Ajax.request({
url : '/keepalive',
method : 'GET',
success: function(response, options){
//dummy server call each 60 seconds
keepaliveHandler.delay(60000);
}
});
});
var timeoutHandler = new Ext.util.DelayedTask(function(){
//invalidate session
Ext.Ajax.request({
url : '/logout',
method : 'GET',
success: function(response, options){
Ext.MessageBox.show({
title: MessagesMap.getMessage('session.closed'),
msg: MessagesMap.getMessage('session.closed.message'),
buttons: Ext.MessageBox.OK,
fn: function() {
window.location.pathname = '/';
},
icon: Ext.MessageBox.WARNING
});
}
});
});
if(Ext.ux.SystemProperties.isLogged) {
keepaliveHandler.delay(60000);
timeoutHandler.delay(Ext.ux.SystemProperties.timeout);
//check for mouse movements
document.body.onmousemove = function(e) {
timeoutHandler.delay(Ext.ux.SystemProperties.timeout);
};
}
+1
感謝您的回覆。我能夠以不同的方式來做到這一點 - 當一個新的會話啓動,並且該用戶的身份驗證Cookie過期得到了,我回國,其中包括一條錯誤消息傳遞會話超時的響應。 – extjsnewbie 2011-04-22 14:08:55
相關問題
- 1. Grails/Ext js:請求不擴展會話(會話超時)
- 2. Ext JS的登錄會話
- 3. 如何覆蓋Ext JS JsonStore超時?
- 4. 會話超時
- 5. 會話超時
- 6. 會話超時
- 7. 會話超時
- 8. 會話超時
- 9. 會話超時
- 10. 如何同步JS超時和ASP.NET會話超時?
- 11. 超時會話的時間
- 12. PostgreSQL:會話超時?
- 13. php會話超時
- 14. php會話超時
- 15. ASP.NET - 會話超時
- 16. PHP會話超時
- 17. OpenCart:PayPal會話超時
- 18. wxPython會話超時
- 19. PHP會話超時
- 20. 會話值超時
- 21. 會話超時.NET
- 22. 會話超時Android
- 23. PHP會話超時
- 24. 會話ASP.NET超時
- 25. WCF會話超時
- 26. mvc會話超時
- 27. 會話超時ASP.Net
- 28. FiddlerCore會話超時
- 29. JBoss會話超時
- 30. Jhipster會話超時
ExtJS的沒有一個整體很多事情要做會話管理。它是構建應用程序前端的客戶端庫。會話管理髮生在服務器端,使用ExtJS作爲前端在那裏沒有太大的區別。 – Tommi 2011-04-11 17:41:57
所以你的意思是我從服務器端引發異常並在EXT中處理它? – extjsnewbie 2011-04-11 17:46:10
如果你與ExtJS的Ajax請求,它失敗,因爲會話已過期,那麼肯定的是,這是很好的做法,捉內ExtJS的這個錯誤,並採取必要的行動(顯示一個消息,重定向到登錄頁面等)。 – Tommi 2011-04-11 17:50:11