2012-11-08 56 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