【问题标题】:Resetting session timeout重置会话超时
【发布时间】:2012-04-11 18:32:57
【问题描述】:
我有一个网页,用户可以在其中使用 AJAX 调用服务器来扩展会话。如果应用程序配置的会话超时为 30 分钟,他可以通过按下按钮将会话延长 5 分钟。当该用户提交页面时,我需要将此会话超时值重置回全局会话超时值。
在 Java 中是否可以重置它?
要么
是否可以读取 web.xml 中配置的全局会话超时值?
编辑:
我正在使用以下代码来扩展会话
request.getSession().setMaxInactiveInterval(300000);
【问题讨论】:
标签:
java
session
session-timeout
【解决方案1】:
用户如何延长会话。我的意思是你是否提供了一个关于它的 javascript 警报/确认框。
理想情况下,会话应该在用户向服务器提交请求时自动扩展。
代码中的 setMaxInactiveInterval() 和 web.xml 中的 <session-config> 应该在正常情况下执行此操作。
分享你的应用的确切情况
编辑:
向 JSP 发送一个虚拟请求应该会自动延长会话,因为会话超时是根据非活动间隔来衡量的,并且虚拟请求应该放弃直到现在的非活动间隔。
【解决方案2】:
我通过在执行动作类时将默认会话设置为会话变量来解决它,然后在需要时使用它来重置。
我不确定这是解决这个问题的正确方法。但它至少解决了我的问题。
【解决方案3】:
超时和休息功能在这里,它将根据服务响应工作。
时间设置功能:
$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) {});
}