如何在用户在ASP.NET中注销时清除所有历史记录?

时间:2012-02-14 06:21:21

标签: asp.net .net asp.net-mvc-3 c#-4.0

当用户注销时,我想清除所有历史记录和缓存。这样用户就无法返回页面。

出于这些目的,我在login.aspx页面上使用以下: -

  if (Request.QueryString["action"] == "logout")
        {

            FormsAuthentication.SignOut();
            Session["CurrentUser"] = null;
            Session["IsJobPoster"] = null;
            Session["AdminEmail"] = null;
            Session["IsAdmin"] = null;
            Response.Buffer = true;
            Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(-1d);
            Response.Expires = -1500;
            Response.CacheControl = "no-cache";


    }

但是用户可以在退出后返回页面。

请建议我使用可用的链接或示例代码。

4 个答案:

答案 0 :(得分:1)

另外,您是否有理由不使用Session.Abandon()?您应该考虑这一点,特别是如果您获得更多的会话变量,它将更容易维护。

答案 1 :(得分:0)

不确定.Net,但是,通常使用POST并使页面到期(通过适当的响应标头)并使用HTTP重定向应该删除历史记录。另外,如果使用cookie来维护会话,那么用一些垃圾覆盖cookie也会有所帮助。

答案 2 :(得分:0)

我猜你正在看到页面的客户端缓存版本。

将缓存调用(Expires,CacheControl)移到if语句之外。您希望它们在每个请求中执行,以便需要登录的页面不会被缓存在客户端。然后,当回到历史记录中时,浏览器将通知用户该页面无效/旧/过时并需要刷新。这将启动一个新请求,该请求应将用户重定向到登录页面。

答案 3 :(得分:0)

用户在注销后能够看到的上一页肯定是客户端中缓存的页面。所以你要做的就是编写这样的代码(从你的代码中复制):

Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(-1d);
Response.Expires = -1500;
Response.CacheControl = "no-cache";

在登录用户看到的页面中,以便这些页面不会在浏览器中缓存。有意义吗?