浏览器返回按钮并重新执行

时间:2014-01-31 03:42:59

标签: c# asp.net-mvc

我有一个MVC站点(MVC 4)并且我需要阻止这个问题。 将该网站视为一个应用程序流程网站(即您申请某些内容并需要填写一系列详细信息并逐步完成)

因此,当用户点击此页面上的提交时:

认证

它需要他们“选择产品”页面。然后当他们点击选择产品提交时,它会将它们带到“数量”页面。

现在,我已将[NoCache]属性应用于这些操作方法。 NoCache属性如下:

public sealed class NoCacheAttribute : ActionFilterAttribute
    {
        public override void OnResultExecuting(ResultExecutingContext filterContext)
        {
            filterContext.HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
            filterContext.HttpContext.Response.Cache.SetValidUntilExpires(false);
            filterContext.HttpContext.Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
            filterContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            filterContext.HttpContext.Response.Cache.SetNoStore();

            base.OnResultExecuting(filterContext);
        }
    }

这确实适用于我想要的东西(即不缓存页面)。

问题是,如果他们点击后退按钮,它可以:

  • 从本地临时文件夹缓存
  • 返回
  • 重新启动操作

如果他们点击后退按钮,我想抓住他们刚来的页面,这样我就可以告诉他们他们不能这样做了。

问题是,当发生这种情况时 - UrlReferrer实际上是首先将它们带到页面的页面,即:

详细信息 - >资格 - >选择产品 - >量

如果他们进入资格认证,然后选择产品,并在选择产品页面上,他们回到浏览器,资格操作方法(GET)有详细信息的UrlReferrer。这确实有意义,因为从技术上来说,它确实来自它。

如何检查他们是否点击后退按钮或来自其他页面(即选择产品)?我需要防止这种情况发生,如果他们点击浏览器中的后退按钮,则将其指向自定义页面。

谢谢

0 个答案:

没有答案