退出后退回箭头

时间:2009-02-23 21:07:34

标签: asp.net authentication session

我有一个使用Forms身份验证的ASP.NET应用程序。当用户单击页面上的“注销”按钮时,它将运行以下代码。

        FormsAuthentication.SignOut();
        Response.Expires = 0;
        Response.Cache.SetNoStore();
        Response.AppendHeader("Pragma", "no-cache");

但是,用户仍然只需按后退箭头即可查看上一页,无需再次登录。我确信它与缓存的上一页有关。如何确保在返回时提示他们再次登录?

3 个答案:

答案 0 :(得分:5)

Response.Cache.SetCacheability(HttpCacheability.NoCache);

答案 1 :(得分:1)

现在您知道为什么会收到消息,“您已经注销了。出于安全考虑,请关闭此浏览器窗口。”

没有缓存是一种解决方法。

倒数第二个解决方法是使用ajax来提取任何敏感信息 - 这将在后面的情况下再次运行,并且不应缓存信息。这是更多的连接和更多的延迟,但是由于现代浏览器缓存,除了诸如此类的解决方法之外,没有什么可以做的。

- 亚当

答案 2 :(得分:0)

虽然无法保证缓存,但这对我来说很有用

    //Used for disabling page caching
    HttpContext.Current.Response.Cache.SetExpires(
      DateTime.UtcNow.AddDays(-1));
    HttpContext.Current.Response.Cache.SetValidUntilExpires(false);
    HttpContext.Current.Response.Cache.SetRevalidation(
      HttpCacheRevalidation.AllCaches);
    HttpContext.Current.Response.Cache.SetCacheability(
      HttpCacheability.NoCache);
    HttpContext.Current.Response.Cache.SetNoStore();

在任何页面的OnInit()方法(可能通过使用基类)在您不希望用户能够缓存的任何页面上运行它。

但要小心,有些页面可能要求您允许缓存,例如在SSL页面上进行文件下载等。

我在某个地方找到了这个代码,如果我找到了链接,我会更新帖子。