2012-02-14 44 views
1

当用户注销时,我想清除所有历史记录和缓存。以便用户无法返回页面。如何清除用户在ASP.NET中注销时的所有历史记录?

对于这些目的,我是使用下面的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"; 


    } 

但用户可以去注销回来后页面。

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

+0

hrm。通常'FormsAuthentication.SignOut()'应该这样做。必须有更多的故事 – 2012-02-14 06:35:58

+0

我不确定你是否使用会员提供者。 如果您是,提供商将删除您的cookie并将用户重定向到登录页面。一旦用户回来,用户应该重新转到登录页面。在ASP.NET MVC中使用表单身份验证:http://msdn.microsoft.com/en-us/library/ff398049.aspx并在ASP.NET 2.0中使用成员资格http://msdn.microsoft.com/en-us/库/ ff648345.aspx。 – 2012-02-14 06:40:12

+0

您无法删除客户端的浏览器历史记录,这是由Web浏览器控制的,不可与网页混淆。 – Skuld 2012-02-14 15:41:59

回答

0

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

+0

您无法删除客户的历史记录,这是由浏览器控制的。 – Skuld 2012-02-14 15:40:58

+0

我的意思是后退按钮的历史(-1)页面将会过期。不是全部浏览记录。 – 2012-02-15 09:25:48

+0

正如我所说的,你不能在javascript /从网页中删除一个后退按钮历史元素,在一天结束时,这是浏览器控制的行为,不受网站控制。想想如果他们在移除/更改/阅读您的浏览器历史记录时,会在垃圾邮件网站上获得的所有滥用行为。 – Skuld 2012-02-15 12:03:00

0

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

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

1

另外,是否有一个原因,你不使用Session.Abandon(),而不是?你应该考虑这一点,特别是如果你获得更多的sessionvariables会更容易维护。

+0

你是正确的会议,我使用Session.Abandon。但我也想在用户注销时清除所有缓存大小。使用查询字符串action = logout重定向到登录页面。 – 2012-02-16 04:12:40

0

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

Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(-1d); 
Response.Expires = -1500; 
Response.CacheControl = "no-cache"; 
在那些被视为通过登录的用户,使这些都不是在浏览器中缓存的页面

。说得通?

+0

请在我的代码中建议我正确。 – 2012-02-16 04:06:11

+0

@Sushant,我认为你的代码没有问题。问题在于*你放置了你的代码。您可以将其应用到需要验证的页面(例如/ account/details,/ account/profile等),而不是在注销页面中写入该代码。如果将这些代码应用于这些页面,那么它们将不会缓存在浏览器中,因此当用户单击后退按钮时,它们将被重定向到登录页面(正因为浏览器中没有缓存页面)。 – 2012-02-16 10:29:20

+0

换句话说,您在注销时不会擦除浏览器缓存。简而言之,不要让浏览器缓存经过验证的页面。 – 2012-02-16 10:30:23

相关问题