Я застрял в этой проблеме всю неделю, и меня более чем раздражает тот факт, что я должен исправить это заявление, чтобы соответствовать политикам безопасности, в которых я работаю, в любом случае ...Классический ASP и сеанс Тайм-ауты - отслеживание таймера сеанса?
Я пытаюсь отслеживать сеанс в классическом веб-приложении ASP. Я могу установить session.timeout, а также переменную сеанса в файле session_onstart моего файла gobal.asa. Он работает просто отлично:
Sub Session_OnStart
Session("LoggedOn") = true
Session.Timeout = 5
End Sub
Далее, на одной странице (чтобы проверить решение этой проблемы), я реализовал решение akiller от here.
мне нужно изменить код, чтобы выглядеть следующим образом:
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, когда сеанс завершается (на стороне сервера)
- Установить сеанс («LoggedOn») ложь в случае Session_OnEnd в global.asa
- session.asp возвратит ложь, как результат
- перенаправляет пользователя туда, куда ему нужно.
Спасибо,
Ник
Прочитал обновление в этом ответе, которое дает вам решение с использованием другого значения сеанса для хранения 'DateAdd (« n », Session.Timeout, Now())', давая вам точно, когда истечет срок вашей сессии. – Lankymart