繁体   English   中英

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

[英]How to disable the back button in browser when user logout in asp.net c#

我们的问题是我们能够在注销时清除 session。

但是,如果用户单击后退按钮,则他/她可以通过所有先前的屏幕 go。

但优点是,只需单击任何此类以前的冲浪页面,即可将用户带回登录页面,我们已经做到了。 但我们的要求是不允许用户通过之前的浏览页面访问 go。

您需要强制缓存过期才能使其正常工作。 我正在为您寻找代码示例。

编辑
为你找到了这个,它已经在这里解决了。

Page.Response.Cache.SetCacheability(HttpCacheability.NoCache)

这里...

在页面加载事件的母版页中编写此代码

Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.UtcNow.AddHours(-1));
Response.Cache.SetNoStore();

并在头部的登录页面中编写此代码

<script type="text/javascript">
window.history.forward(-1);
</script> 

您不能“禁用”后退按钮。 我见过许多“技巧”可以清除过去的历史记录,但这些都是不可靠的,它们在浏览器之间不起作用,甚至在浏览器版本之间都不起作用。

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

对于 ASP.NET 页面,您可以使用Response.CacheControl来控制页面在用户缓存中的存储方式。 其他 web 开发语言将使用类似的东西。

您可以 go Outlook Web 访问样式,只需关闭当前窗口 Z686155AF75A60A0F6EZD8。

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

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

没有办法阻止浏览器历史记录,因此一起使用几种方法并且不要计划用户“不倒退”以确保您的应用程序安全性非常重要。

这是我在编码解决方案上找到的解决方案

在母版页中

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.ClearHeaders();
        Response.AppendHeader("Cache-Control", "no-cache"); //HTTP 1.1
        Response.AppendHeader("Cache-Control", "private"); // HTTP 1.1
        Response.AppendHeader("Cache-Control", "no-store"); // HTTP 1.1
        Response.AppendHeader("Cache-Control", "must-revalidate"); // HTTP 1.1
        Response.AppendHeader("Cache-Control", "max-stale=0"); // HTTP 1.1
        Response.AppendHeader("Cache-Control", "post-check=0"); // HTTP 1.1
        Response.AppendHeader("Cache-Control", "pre-check=0"); // HTTP 1.1
        Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.1
        Response.AppendHeader("Keep-Alive", "timeout=3, max=993"); // HTTP 1.1
        Response.AppendHeader("Expires", "Mon, 26 Jul 1997 05:00:00 GMT"); // HTTP 1.1
    }

控制登录状态

    protected void LoginStatusUser_LoggedOut(object sender, EventArgs e)
    {
        Session.Abandon();
        FormsAuthentication.SignOut();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM