#jquery #asp.net-mvc-2 #forms-authentication
#jquery #asp.net-mvc-2 #формы-аутентификация
Вопрос:
Я использую проверку подлинности в формах, и у меня тайм-аут составляет 30 минут.
Что я ищу, так это какой-нибудь способ сообщить пользователю через несколько минут, что время ожидания истекает, и хотят ли они сохранить свою сессию живой.
У нас есть несколько довольно больших форм, в которые пользователи заполняют большое количество данных. Они, вероятно, проверяли информацию в других системах, перепроверяли с коллегами по телефону и т.д.
Я также хочу добавить автосохранение непосредственно перед истечением времени ожидания.
Легко ли этого добиться, например, с помощью jQuery?
Комментарии:
1. Ищите HttpSessionListener download.oracle.com/javaee/1.4/api/javax/servlet/http/… эквивалент в .net, также требует некоторой дополнительной логики
Ответ №1:
Решение, которое мы нашли в нашем проекте, заключалось в создании javascript (не обязательно jQuery), который запрашивает пользователя перед выходом из системы и отправляет фиктивный HttpRequest, чтобы поддерживать сеанс в рабочем состоянии.
наш скрипт был чем-то вроде (непроверенный):
var promptUserTimeoutId = 0;
promptUserTimeoutId = setTimeout(promptUser, 30 * 60 * 1000); //call just once, in 30 minutes
function promptUser() {
if (alert('stay logged in?')) {
sendHttpRequest(); //just signal a keep-alive to the server...
//re-set the 30 minutes count
clearTimeout(promptUserTimeoutId);
promptUserTimeoutId = setTimeout(promptUser, 30 * 60 * 1000);
}
}
Ответ №2:
function keepSessionAlive(timeLeft)
{
var timer = setTimeout(function(){
//Prompt the user to keep the session alive;
//make a dummy request via ajax to refresh the session on the server.
//reset the timeLeft to your timeout
//call keepSessionAlive(timeLeft)
},timeLeft);
}
Затем при загрузке документа вы можете вызвать свой метод.
body.onload=keepSesionAlive(<yourTimeOut-3 to 4 minutes>);
Хотя я не знаю способа jquery сделать это.