如何停止浏览器后退按钮显示我离开的页面

时间:2012-04-16 13:41:49

标签: c# asp.net-mvc-2

我正在使用MVC2和VS2010。 我们已经创建了一个Web应用程序,但希望在页面离开后停止任何浏览器重新访问页面。 我们希望这样做,以便使用随后离开的公共计算机的人可以感到安全。我们不希望以下用户可以使用后退按钮查看第一个使用页面的场景。 我试过[OutputCache(NoStore = true,Duration = 0,VaryByParam =“*”)] 这似乎工作正常,我得到一个网页已过期。但是,如果我再次按下浏览器后退按钮,将显示该页面。

1 个答案:

答案 0 :(得分:1)

我自己也有类似的情况想要阻止浏览器返回的情况,并研究了一些不同的解决方案。第一个也是最差的是Java脚本函数,如果用户单击浏览器中的后退按钮,则会将用户带回到他们所在的页面。它隐藏了问题而不是解决它,但是想到了它。代码如下:

<script type="text/javascript" language="javascript">
        function disableBackButton() {
            window.history.forward()
        }
        disableBackButton();
        window.onload = disableBackButton();
        window.onpageshow = function (evt) { if (evt.persisted) disableBackButton() }
        window.onunload = function () { void (0) };
    </script>

这适用于Firefox,Chrome和IE确定。你可以把它放在你的母版页中。 许多人会告诉你,这不是做事的方式,而是因为它侵入了众所周知的浏览器行为等等。

所以我的第二个建议是我在这里看到的: Disable browser cache for entire ASP.NET website 哪个不会缓存任何更符合你想要的内容的东西。

另一个想法是传递页面或会话令牌并在操作上检查令牌 - 如果它无效重新路由到错误页面。这至少会阻止新用户对上一页做任何事情。

我很想知道你是如何解决这个问题的,如果你已经解决了它。