【问题标题】:Restrict user to go BACK after Payment has been done付款完成后限制用户返回
【发布时间】:2013-07-31 18:21:29
【问题描述】:

我已将支付网关集成到我用 MVC4 制作的 Web 应用程序中 剃刀。付款成功后,用户被重定向 到返回 URL..

然后我做一些过程,比如生成唯一 ID,发送付款 详情 sms blah blah..

[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() 或付款 再次网关..

【问题讨论】:

  • 我认为你不能。在数据库中存储一些东西,以知道该订单已被处理
  • 但是我看到一些网站......一旦你登陆他们的主页......你不能回到前一页......如果用户点击返回按钮,即使你被重定向到相同页面
  • 也许有从一个页面到下面的重定向,但你总是可以直接返回两次。或者在新选项卡中打开,因此您会丢失历史记录。或者处理后的 url 存储在 session 中,所以你输入的 url 无关紧要。

标签: javascript asp.net-mvc razor payment-gateway no-cache


【解决方案1】:

这应该可以防止缓存:

        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();

当表单被提交并返回错误以防某些暗魔法缓存工作时,服务器检查可能也是一个好主意。它真的不应该。

编辑: 这将阻止浏览器的“后退”按钮加载缓存页面,这就是问题所在。 当然,您需要检查页面输入以查看交易是否已经发生。

【讨论】:

  • 它会阻止缓存,但不会重新访问网络并重新处理订单。
猜你喜欢
  • 2013-03-02
  • 2014-07-11
  • 2012-01-01
  • 2014-07-30
  • 2012-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多