如何在用户在asp.net c中注销时禁用浏览器中的后退按钮

10 c# asp.net

我们的问题是我们能够在注销时清除会话.

但是,如果用户单击后退按钮,则他/她可以浏览所有先前的屏幕.

但优点是,只需点击任何此类冲浪页面,用户就可以登录页面,我们就是这样做的.但我们的要求是我们不应该允许用户浏览之前的冲浪页面.

RSo*_*erg 12

您需要强制缓存过期才能生效.我在找你的代码示例.

编辑
为您找到了这个,它已经在SO上解决了.

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)
Run Code Online (Sandbox Code Playgroud)

这里...


小智 10

在页面加载事件中将此代码写入母版页

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();
Run Code Online (Sandbox Code Playgroud)

并在head部分的Login页面中编写此代码

<script type="text/javascript">
window.history.forward(-1);
</script> 
Run Code Online (Sandbox Code Playgroud)


Eri*_*sch 7

你不能"禁用"后退按钮.我看到有很多"技巧"可以清除后面的历史记录,但这些都是不可靠的,它们无法在浏览器之间工作,甚至浏览器版本甚至浏览器版本也无法工作.

正如其他人所说,正确的方法是使缓存无效,以及服务器端验证,如果会话尝试重新发送数据,则会话不再有效.此外,Response.Redirect比回发更好,因为这会导致get而不是post.


Bra*_*don 1

您可以采用 Outlook Web Access 风格,只需让 JavaScript 关闭当前窗口/选项卡。

另外,您可以确保您的“注销”页面是回发页面。这将迫使用户在大多数浏览器中使用“后退”按钮重试回发,此时您可以检测到他们不再登录,并可以将他们重定向回登录页面。

编辑:其他人提到了 Response.Redirect。实际上,您可以使“注销”链接转到执行重定向的页面,并且始终重定向到第二个“登陆页面”。如果用户单击“返回”,他们将再次登陆重定向并将其放回到开始的位置。

没有办法阻止浏览器历史记录,因此重要的是同时使用几种方法,并且不要计划用户“不后退”以确保应用程序的安全。