0

我正在使用 MVC2 和 VS2010。我们创建了一个 Web 应用程序,但希望在页面离开后停止任何浏览器重新访问页面。我们希望这样做,以便使用公共计算机然后离开的人可以感到安全。我们不希望出现以下用户只需使用后退按钮即可查看首次使用页面的情况。我试过 [OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] 这似乎工作正常,我得到一个网页过期。但是如果我再次按下浏览器的返回按钮,页面就会显示出来。

4

1 回答 1

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 好的。你可以把它放在你的母版页中。许多人会告诉你这不是做事的方式,但是因为它侵入了众所周知的浏览器行为等

所以我的第二个建议是我在这里看到的: 禁用整个 ASP.NET 网站的浏览器缓存, 它不会缓存任何与我认为更符合您想要的内容的内容。

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

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

于 2012-06-27T22:32:48.833 回答