2012-10-07 35 views
0

我們有一個用Delphi和Intraweb編寫的基於網絡的產品,可以在公共信息亭(全屏)上運行。登錄頁面會話超時信息亭

有什麼辦法可以使用Intraweb來顯示不屬於任何會話(只是一個標準Intraweb頁面)的登錄頁面,所以會話只在用戶成功登錄時創建?

+0

IW會議已經開始,當瀏覽器顯示登錄表單?多麼奇怪 - 也許服務器想要提高其使用率統計信息) – mjn

+0

@mjn它們通常在創建新的會話對象時啓動嗎? – SteB

+0

我想這是在Intraweb「設計」。如果我沒有弄錯,大多數其他web框架都會等待創建會話,直到用戶POST登錄表單。因爲沒有關聯(經過身份驗證的)「用戶對象」的會話確實沒什麼用處。但我不知道Intraweb說這個問題沒有解決方案。 – mjn

回答

0

我們發現這樣做的最佳方式是使用Javascript每隔30秒左右向Intraweb發出一個AJAX請求,以使Intraweb認爲該頁面仍在使用中,因此不會超時。

的Javascript(調用每30秒的IntraWeb的AJAX方法):

<script type="text/javascript"> 
    document.addEventListener("DOMContentLoaded", function(event) { 
     window.setInterval(function() { 
      executeAjaxEvent("", null, "ResetSessionTimer", false, null, true); 
     }, 30000); 
    }); 

德爾福(私有方法和註冊回調):

procedure TfrmLogin.ResetSessionTimer(EventParams: TStringList); 
begin 
//Intraweb does everything for us, we just need this method to exist 
end; 

WebApplication.RegisterCallBack('ResetSessionTimer', ResetSessionTimer);