Сброс тайм-аута сеанса

У меня есть веб-страница, где пользователь может расширить сеанс, используя вызов AJAX на сервер. Если время ожидания сеанса, настроенное приложением, составляет 30 минут, он может продлить сеанс на 5 минут, нажав кнопку. Когда этот пользователь отправляет страницы, мне нужно сбросить это значение тайм-аута сеанса до глобального значения тайм-аута сеанса.

Возможно ли в Java сбросить его? или Можно ли прочитать глобальное значение тайм-аута сеанса, настроенное в web.xml?

ИЗМЕНИТЬ:

Я использую следующий код для расширения сеанса

request.getSession().setMaxInactiveInterval(300000);

person Joe    schedule 28.03.2012    source источник


Ответы (3)


Как пользователь продлевает сеанс. Я имею в виду, вы даете окно предупреждения/подтверждения javascript относительно этого.

В идеале сеанс должен автоматически продлеваться, когда пользователь отправляет запрос на сервер.

setMaxInactiveInterval() в коде и <session-config> в web.xml должны делать то же самое в обычном сценарии.

Поделитесь точной ситуацией вашего приложения

РЕДАКТИРОВАТЬ: Отправка фиктивного запроса в JSP должна автоматически продлевать сеанс, поскольку время ожидания сеанса измеряется с точки зрения неактивного интервала, а фиктивный запрос должен отбрасывать неактивный интервал до сих пор.

person Piyush-Ask Any Difference    schedule 28.03.2012

Я решил это, установив сеанс по умолчанию в качестве переменной сеанса при выполнении класса действий, а затем используя его для сброса, когда это необходимо. Я не уверен, что это правильный способ решить эту проблему. но это решает мою проблему, по крайней мере, на данный момент.

person Joe    schedule 09.04.2012

Функция тайм-аута и отдыха здесь, и она будет работать в соответствии с ответом службы.

Функция настройки времени:

$rootScope.SessionTime =localStorage.getItem('mint');
           $rootScope.tickDuration=1000;
                $rootScope.myInterval=setInterval(function(){

                  $rootScope.SessionTime=$rootScope.SessionTime-$rootScope.tickDuration
                  //console.log("secs:::::"+$rootScope.SessionTime);
                 if($rootScope.SessionTime<300000 && $rootScope.tickDuration >0){
                    $('#session').modal('show');
                    $rootScope.tickDuration =0;
                 }
           },$rootScope.tickDuration);

Функция тайм-аута:

 $scope.myTimeout = function(){            
           var sessionId=getcokkies.getsessionId(); 
           $http({
                   url: config.apiUrl + '/user/refreshsession?sessionId='+sessionId,
                 method: "POST",
                   headers: {
                       'Content-Type': 'application/x-www-form-urlencoded'
                   },
                   data: $.param({
                       'userId': parseInt(getcokkies.getUserId()),
                   })
               }).then(function successCallback(response) {
                   //localStorage.setItem("mint", 600000);
                    //$rootScope.SessionTime = 600000;
                   clearInterval($rootScope.myInterval); 
                   localStorage.setItem("mint", 600000); 
                   $rootScope.SessionTime =localStorage.getItem('mint');
                  // console.log("after++++"+$rootScope.SessionTime);
                   $rootScope.tickDuration=1000; 


               }, function errorCallback(response) {});

           }
person pavee yosen    schedule 27.07.2018