有没有办法让Javascript在点击刷新后重定向页面(会话已经过期)

时间:2014-11-07 05:29:40

标签: java javascript jquery ajax session

我在我的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级别做什么,我还能弹出那个对话然后重定向吗?

2 个答案:

答案 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,并在登录时启用它。