【问题标题】:Is there a way to make Javascript redirect the page after cliking refresh( the session already expired)有没有办法让Javascript在点击刷新后重定向页面(会话已经过期)
【发布时间】:2015-01-03 20:36:13
【问题描述】:

我在我的 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 级别做些什么来实现,我还可以弹出该对话框然后重定向?

【问题讨论】:

  • 用户退出后为什么不弹出消息?

标签: java javascript jquery ajax session


【解决方案1】:

如何使用

编辑

success: function() {
        alert ("You have been logged out");"
        window.location.href = "you_have_been_logged_out.jsp";  // or something
   },

但是通常的方法是使用 servlet 过滤器来检查用户是否已登录(存储在会话变量中的值)

【讨论】:

  • 可能我没有说清楚。如果我按照您的建议添加,那么在我的本地计数器达到 0 后,页面将自动重定向。系统要求强制页面在过期后保持不变,只有当用户触发某些操作时才会发生重定向。
  • 然后查看我的更新。当然,其他一些对话框会更好
  • 我知道你的意思,但要求是在用户刷新页面之前不会显示弹出对话框。在您的情况下,只要 ajax 调用成功返回,就会显示该弹出窗口。
  • 执行此操作的正常方法是使用 servlet 过滤器来检查用户是否已登录(存储在会话变量中的值)
【解决方案2】:

你可以在你的jsp中添加一个标志

<%
if(session.getAttribute('flag')==null)
   response.sendRedirect('desired/page');
%>

只要页面请求的会话标志为空,它就会将页面重定向到重定向页面。因此,当用户单击刷新按钮时,它会被重定向。只需在注销时在服务器端将此标志设为空,并在登录时启用它。

【讨论】:

  • 只需在您的注销代码中的服务器端更改它。这对页面功能没有影响,但是一旦页面刷新,它将重定向到指定的页面。您提到您不想在会话到期时更改页面中的任何内容,但仅在完成某些操作(如刷新)时。
  • 即使你用js改变了页面中的一些东西,在页面重新加载时它也不会出现。因为所有内容都会根据新请求重新加载。
猜你喜欢
  • 1970-01-01
  • 2011-06-26
  • 1970-01-01
  • 2018-02-04
  • 1970-01-01
  • 1970-01-01
  • 2011-07-09
  • 2014-06-11
  • 2013-12-22
相关资源
最近更新 更多