我在我的Javascript中保留了一个计数器,当计数器达到0时,它将触发以下AJAX调用:
function logout2() {
$.ajax({
type: "GET",
dataType: "json",
url: "app/logout",
timeout: 20000,
success: function() {
;
},
error : function(xhr, textStatus, errorThrown) {
ajaxErrorHandler(xhr, textStatus, errorThrown);
}
})
}
正如您将看到的,它将正式从服务器端注销,但页面将保持不变,这意味着页面保持不变,它不会自动重定向到登录页面。只有当用户执行特定操作(例如单击此页面上的按钮)时,才会触发弹出式提示"会话超时"并将用户重定向到登录页面。
但是,现在我被要求增强一点,在调用上面的AJAX函数之后,不仅像点击按钮这样的用户操作会触发重定向,而且当用户刷新页面时它也会这样做。
我尝试了一点,但实际上没有收获。目前页面过期后,如果我刷新,它将不会弹出会话超时对话框,也不会重定向到所需的页面。
在用户刷新后,我能在JavaScript或Ajax级别做什么,我还能弹出那个对话然后重定向吗?
答案 0 :(得分:2)
如何使用
修改强>
success: function() {
alert ("You have been logged out");"
window.location.href = "you_have_been_logged_out.jsp"; // or something
},
然而,正常的方法是使用servlet过滤器来检查用户是否已登录(存储在会话变量中的值)
答案 1 :(得分:1)
你可以为你的jsp添加一个标志,如
<%
if(session.getAttribute('flag')==null)
response.sendRedirect('desired/page');
%>
只要会话标志在页面请求上为空,它就会将页面重定向到重定向页面。因此,当用户单击刷新按钮时,它将被重定向。只需在注销时在服务器端将此标志设为null,并在登录时启用它。