2012-11-08 133 views
0

我有一个自定义注销页面。当用户点击注销时,达到该页面(注销状态保存在数据库中)。没有登录机制。如果用户尝试在新窗口中允许他查看该页面,并且登录状态会以登录状态更改。处理注销的更好方法

注销后,当用户点击返回按钮(从注销页面)时,它不应该允许用户查看前一页。

同样:当用户访问一个页面时,时间被存储。当他闲置20分钟并尝试手术时,他将被重定向到会话超时。他不应该能够在后退按钮单击时查看前一页。

当前在每个页面中,我正在检查数据库状态,并在状态被注销后再次重定向到注销页面。但它会导致页面先加载,然后在javascript中进行验证,然后重定向。有没有更好的方法来处理这个问题?

注:我张贴它作为基于注释的新问题在Clear browser history

 $.ajax(
     { 
      type: "POST", 
      url: "LogOut.aspx/GetActiveIndicatorStatus", 
      data: '{"empID": "' + empID + '"}', 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: navigateBasedOnStatus 

     } 
     ); 


//Helper Function 
function navigateBasedOnStatus(result) { 


    if (result.hasOwnProperty("d")) { 
     result = result.d 
    } 

    //alert($.trim(result)); 

    if ($.trim(result) == "LoggedOUT") { 

     window.location.href("LogOut.aspx"); 
    } 
    else 
    { 
     contentHolderDiv.css("display", "block"); 
    } 


} 

参考:

  1. Clear browser history
  2. Dynamically add href on <a>
+2

我不明白的机制。没有明确的登录名,但您可以注销?用户在访问新网站时会自动重新登录?听起来这听起来很不正常,而且很容易出错......更不用说Javascript在处理登录/退出时也不应该有任何部分。 – deceze

+0

@deceze当用户访问一个页面时,时间被存储。当他闲置20分钟并尝试手术时,他将被重定向到会话超时。他不应该能够在后退按钮单击时查看前一页。 – Lijo

回答

2

方案1:不要'阿贾克斯:

如果你的页面上的用户可能无法再看到,

window.location.replace("LogOut.aspx/GetActiveIndicatorStatus?empID="+empID) 

将取代你是不管你返回页面。

方案2:在结果替换:

if ($.trim(result) == "LoggedOUT") { 

    window.location.replace("LogOut.aspx"); 
} 
else 
{ 
    contentHolderDiv.css("display", "block"); 
} 
+0

假设用户首先到达page1,然后是page2。用户单击第2页的注销。考虑我在退出点击时使用了REPLCAE。用户仍然可以回到pag1;尽管不是page2。有没有解决方案? – Lijo

+0

从page1使用location.replace(“page2 ...”),那么在历史中没有page1,从page2注销也会替换该页面 – mplungjan