2013-07-31 7 views
1

MVC4 면도기에서 만든 웹 응용 프로그램에 결제 게이트웨이를 통합했습니다. 결제가 성공적으로 완료되면 사용자는 .. 반환 URL에 리디렉션 그런 지불 완료 후 사용자가 뒤로 이동하도록 제한

내가 할, 고유 ID를 생성 지불 자세한 내용은 SMS를 저쩌구를 전송과 같은 몇 가지 과정 ..

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

      return RedirectToAction("ThankyouUploadDocument"); 
     } 

그런 다음 다른 작업으로 리디렉션합니다.

public ActionResult ThankyouUploadDocument() 
     { 
      //Do Something 

      return View("ThankyouUploadDocument" , paymentViewModel); 
     } 

문제는 사용자가 반격 할 때 .IT가 IPGResponse (간다) 다시 모든 단계를 수행합니다.

또한 [NOCACHE] ... 사용하고 있지만 ..

+0

나는 그렇게 할 수 없다고 생각합니다. 데이터베이스에 항목을 저장하면이 주문이 이미 처리되었음을 알 수 있습니다. – kpull1

+0

그러나 일부 웹 사이트를 본 적이 있습니다 ... 일단 홈페이지로 이동하면 이전 페이지로 되돌아 갈 수 없습니다 ... 사용자가 다시 버튼을 누르면 – sunnykumar

+0

한 페이지에서 다음 페이지로의 리디렉션이있을 수 있지만 언제든지 다시 두 번 직접 이동할 수 있습니다. 또는 새 탭에서 열리므로 기록을 잃어 버릴 수 있습니다. 또는 처리 된 url이 세션에 저장되므로 입력 한 url과 상관 없습니다. – kpull1

답변

0

이를

나는 IPGResponse() 또는 다시 지불 게이트웨이로 돌아갈 사용자를 제한 할 필요가

근무하지 않았다

 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