2012-05-17 52 views
0

我有mainmenu.jsp,login.jsp和logout.jsp。该流程类似于以下如何根据onload函数中的结果显示html内容

的login.jsp ---> mainmenu.jsp ---> logout.jsp

第一用户能够看到的login.jsp并成功登录后,用户可以请参阅mainmenu.jsp,其中单击注销按钮用户被转发到logout.jsp文件。在logout.jsp文件中,如果使用点击浏览器后退按钮,他/她可以看到前一页(mainmenu.jsp),但我想显示login.jsp页面。为了避免这种情况,我在main menu.jsp的加载中使用ajax调用来检查变量。我可以将页面重定向到login.jsp。这是一个像闪烁问题的问题。在服务器返回结果之前,我的mainmenu.jsp文件被加载。服务器返回结果后,页面被重定向到登录页面。我想限制当前页面加载,直到任何响应来自服务器。我怎样才能做到这一点? 我使用下面的代码在主菜单中

$(window).load(function() { 

       $.ajaxSetup({async:false}); //execute synchronously 
       var isSessionExists = ""; 

       $.post("getSession", {}, function(data, textStatus, xhrObject) { 
        isSessionExists = data.split("=")[1]; 

       }); 
       $.ajaxSetup({async:true}); 
       if((isSessionExists.indexOf('NO')>=0)){ 
//     alert("...inside condition...") 
        top.location="index.jsp"; 
       }else{ 
        alert("....BREAK..."+isSessionExists) 
       } 

      }); 
+0

可能的setInterval的组合的onload并保持闪烁的部分与CSS隐藏,直到你准备好了吗? – Jeff

+0

你也使用任何控制器(MVC)吗?如果是,则最好检查控制器是否授权用户查看页面(换句话说,用户已登录或注销)。从控制器您可以返回正确的页面。如果你不使用MVC,那么我想在服务器端必须有可以做这种操作的东西。使用JavaScript来做这样的事情是可能的,但不可取。 –

回答

1

尝试在JSP中添加以下代码片段

<% 
    response.setHeader("Pragma","no-cache"); // HTTP 1.0 
    response.setHeader("Cache-Control","no-store"); // HTTP 1.1 
    response.setDateHeader("Expires", 0); 
%> 

而且通过这个优秀的explantion Prevent Going Back after LOGOUT

+0

+1为最后一个通信网,并且链接“防止LOGOUT退回”。这正是我正在寻找的。 –

相关问题