我一直被困在这个问题整个星期,我更恼火的事实,我必须修复这个应用程序,以满足我的公司工作的安全策略有......反正......经典ASP和会话超时 - 跟踪会话计时器?
我正在尝试跟踪经典ASP网络应用中的会话。我可以在我的gobal.asa文件的session_onstart子文件中设置session.timeout和session变量。它工作得很好:
Sub Session_OnStart
Session("LoggedOn") = true
Session.Timeout = 5
End Sub
接下来,在一个页面上(测试出一个解决这个问题),我已经实现了从here akiller的解决方案。
我需要修改代码看起来像这样:
session.asp
<%
Response.ContentType = "application/json"
If Session("LoggedOn") = true Then
Response.Write "{""loggedOn"": true}"
Else
Response.Write "{""loggedOn"": false}"
End If
%>
和:
<script type="text/javascript">
$(document).ready(function() {
var checkLoggedOn = function() {
$.getJSON('session.asp', function (data) {
if (data.loggedOn = false){
alert(data.loggedOn);
//Need to get alert working when session time expires before redirect can be used.
//window.location.replace("http://stackoverflow.com");
}
});
};
// Call checkLoggedOn every x milliseconds
setInterval(checkLoggedOn, 30000);
});
</script>
现在,我需要做的是找出如何检查之前,还剩下多少时间会话过期。尽管我可以使用Javascript代码来运行类似于客户端上面的检查器,但必须从服务器检查会话中剩余的时间(以防止会话客户端的黑客攻击)。
所以这里是我试图完成的最后一步。
- 触发一个Session.Abandon当会话过期Global.asa中(服务器端)
- 组会议( “LoggedOn”),以虚假的Session_OnEnd事件
- session.asp将返回false作为结果
- 将用户重定向到他们需要去的地方。
感谢,
尼克
您是否阅读过该答案中的更新,它为您提供了一种使用另一个会话值来存储'DateAdd(“n”,Session.Timeout,Now())“的解决方案,可以确切地为您的会话何时到期。 – Lankymart