如何使用C#在ASP.NET中实现用户注销后清除浏览器缓存?

7

作为asp.net的新手,在我的应用程序中使用会员制,使用ClearSession()函数在注销 单击事件中,但是问题在于如果我在注销后单击浏览器上的返回按钮,它会转发到缓存页面。如何清除浏览器缓存,使用户无法查看其个人资料,如果他没有登录?

protected void ClearSession()
{
    FormsAuthentication.SignOut();
    Session.Clear();
    Response.Cache.SetCacheability(HttpCacheability.NoCache);
    Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(-1d);
    Response.Expires = -1500;
    Response.CacheControl = "no-Cache";
}

浏览器退出后返回按钮问题 - Win
1
请注意,您无法从页面的服务器或客户端部分“清除浏览器缓存”,也无法配置浏览器的行为(您可以建议浏览器进行缓存,但不能强制执行)。因此,如果您担心页面留在用户的计算机上,那么您真的很不幸。 - Alexei Levenkov
可能是确保网页在所有浏览器中不被缓存的方法的重复问题。 - BalusC
2个回答

11

我认为你已经接近成功了,需要更多的HTML头来支持所有浏览器。根据SO上的这篇文章,以下是适用于所有浏览器的HTML头:

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

这个的完整代码如下所示:
HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache, no-store, must-revalidate");
HttpContext.Current.Response.AddHeader("Pragma", "no-cache");
HttpContext.Current.Response.AddHeader("Expires", "0");

0
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache"); 
response.setDateHeader("Expires", 0); 

这些头文件仅适用于包含它们的页面,而不是整个 Web 应用程序,因此您可以将包含此头文件的过滤器添加到所有页面,或者禁用返回按钮。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接