如何使用浏览器退出后停止网页浏览

时间:2009-09-25 09:41:12

标签: browser caching asp.net-3.5

我在ASP.NET中拥有网站。我们有两种登录方式 1.用户 2.管理员

我在测试期间遇到以下问题

问题陈述:假设我通过用户登录登录并浏览所有页面,让我们在用户的任何页面点击退出按钮,它会在登录页面重定向我。

现在问题来了,当我使用浏览器时,它显示了我的用户页面但实际上我不应该在注销后查看该页面。

我的功能是正确的,因为如果我在注销后点击页面,它将再次在登录页面重定向我,但我的问题是我不应该在注销后使用浏览器返回用户页面。 [正如谷歌和雅虎所发生的那样]

管理员登录也是如此。

请帮我解决问题。

5 个答案:

答案 0 :(得分:3)

问题是您可以按回来缓存的页面。您可以指示浏览器每次都始终从服务器获取页面。

您需要生成以下所有标题:

Pragma: no-cache
Cache-Control: max-age=1
Expires: Tue, 1 May 1985 01:10:00 GMT

问题并非所有浏览器都支持所有选项,因此您必须包含所有这些标头,以确保所有浏览器都不会缓存您的网页。

需要所有这些标头的另一个原因是,在某些情况下,即使Web浏览器遵守过期标头,您和仍在缓存页面的用户之间也可能存在配置错误的代理服务器。

在ASP中你可能想做这样的事情:

public void Page_Load() {
    Response.ExpiresAbsolute = DateTime.Now.AddDays(-1d);
    Response.Expires = -1500;
    Response.CacheControl = "no-cache";
    Response.Cache.SetETag(randomString);
}

答案 1 :(得分:1)

您必须禁用缓存。

public void Page_Load()
{
Response.Cache.SetCacheability(HttpCacheability.NoCache) 
...
}

答案 2 :(得分:1)

你必须设置以下我猜

Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
Response.Cache.SetValidUntilExpires(false);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();

当用户按下后退按钮时,这将导致您的页面回发,因此您可以检查他是否仍然登录,以防将他重定向到其他地方。

答案 3 :(得分:1)

答案 4 :(得分:0)

您如何登录/退出?这样做的一种正确方法是在登录时将用户信息保存到会话中,并在注销时清除该会话 在每个页面的PageLoad方法测试,如果会话有有效的信息或没有,如果没有停止页面加载。 这样,当用户注销并单击后面时,会话应为空并且不会加载,然后您可以重定向到登录页面。 如果您需要一些代码,请回复