我们有一个用 Delphi 和 Intraweb 编写的基于 Web 的产品,可以在公共信息亭(全屏)上运行。
有没有办法使用 Intraweb 显示一个不属于任何会话的登录页面(只是一个标准的 Intraweb 页面),所以只有在用户成功登录时才会创建会话?
我们发现这样做的最佳方法是使用 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);
});
Delphi(私有方法和注册回调):
procedure TfrmLogin.ResetSessionTimer(EventParams: TStringList);
begin
//Intraweb does everything for us, we just need this method to exist
end;
WebApplication.RegisterCallBack('ResetSessionTimer', ResetSessionTimer);