2013-07-31 57 views
1

我在我的Web應用程序中使用MVC4 Razor進行了集成支付網關。付款已成功完成後,用戶被重定向到 返回URL ..付款完成後限制用戶返回

然後我做一些像生成唯一的ID,發送付款 細節短信等等等等..流程

[NoCache] 
public ActionResult IPGResponse() 
     { 
      //Send SMS.. 
      //Save Payment Response..etc 

      return RedirectToAction("ThankyouUploadDocument"); 
     } 

然後我重定向到另一個操作。

public ActionResult ThankyouUploadDocument() 
     { 
      //Do Something 

      return View("ThankyouUploadDocument" , paymentViewModel); 
     } 

問題是,當用戶擊回。它去IPGResponse(),並再次做 步驟。

我也用[NoCache的] ..但它並沒有工作

我不得不限制用戶返回到IPGResponse()或支付網關 再次..

+0

我認爲你不能。 在數據庫中存儲東西,知道這個訂單已經處理 – kpull1

+0

但是我看過一些網站,其中......一旦你登陸他們的主頁..你不能回到上一頁...如果用戶點擊返回按鈕即使你被重定向到相同的頁面 – sunnykumar

+0

也許有從一個頁面到下面的重定向,但你總是可以直接返回兩次。 或者在新選項卡中打開,因此您失去了歷史記錄。 或者處理後的網址存儲在會話中,因此與您輸入的網址無關。 – kpull1

回答

0

這應防止緩存:

 HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1)); 
     HttpContext.Response.Cache.SetValidUntilExpires(false); 
     HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches); 
     HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
     HttpContext.Response.Cache.SetNoStore(); 

,並可能是一個好主意,也服務器檢查時的形式被提交,並通過一些黑暗魔法緩存作品的情況下,返回錯誤。它真的不應該。

編輯: 這將阻止瀏覽器的「返回」按鈕加載緩存頁面,這就是問題所在。 當然你需要檢查頁面輸入以查看交易是否已經發生。

+0

它可以防止緩存,但不會重新訪問網站並重新處理訂單。 – kpull1