Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Browser 使用浏览器返回注销后,如何停止网页查看_Browser_Caching_Asp.net 3.5 - Fatal编程技术网

Browser 使用浏览器返回注销后,如何停止网页查看

Browser 使用浏览器返回注销后,如何停止网页查看,browser,caching,asp.net-3.5,Browser,Caching,Asp.net 3.5,我有一个ASP.NET网站。我们有两种类型的登录 1.使用者 2.管理员 在测试过程中,我面临以下问题 问题陈述:假设我通过用户登录登录并浏览所有页面,比如在用户的任何页面上单击注销按钮,它将在登录页面重定向我 现在的问题来了,当我使用浏览器回来,它显示我的用户的页面,但实际上我应该无法查看该页面后注销 我的功能是正确的,因为若我在注销后单击页面,它将再次在登录页面重定向我,但我的问题是,我不应该在注销后使用浏览器返回到userpage。 [就像谷歌和雅虎那样] 管理员登录也是如此 请帮我解决问

我有一个ASP.NET网站。我们有两种类型的登录 1.使用者 2.管理员

在测试过程中,我面临以下问题

问题陈述:假设我通过用户登录登录并浏览所有页面,比如在用户的任何页面上单击注销按钮,它将在登录页面重定向我

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

我的功能是正确的,因为若我在注销后单击页面,它将再次在登录页面重定向我,但我的问题是,我不应该在注销后使用浏览器返回到userpage。 [就像谷歌和雅虎那样]

管理员登录也是如此


请帮我解决问题。

您必须禁用缓存

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

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

问题是您可以按back键以缓存页面。您可以指示浏览器每次都从服务器获取页面

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

Pragma: no-cache
Cache-Control: max-age=1
Expires: Tue, 1 May 1985 01:10:00 GMT
问题是并非所有浏览器都支持所有选项,因此您必须包含所有这些标题,以确保所有浏览器不会缓存您的页面

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

在ASP中,您可能希望执行以下操作:

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

我想你必须设定以下条件

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

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

看看我以前也遇到过同样的问题。使用随机etag头也有帮助。Ie将页面标记为每次下载的新资源。谢谢,你能帮助我吗,我如何生成上述字符?特别是在ASP.NET中,我有我的aspx的母版页。母版页中提供了注销链接。是否有必要在master和aspx中同时写入上述代码行?如果我只把它们写在母版页中,它会起作用吗?什么是正确的方法?您的aspx页面是一个由母版页包装的web内容表单。所以这取决于你把代码放在哪里。如果您只想禁用该特定页面的缓存,请将其放置在aspx页面加载中,否则也可以将其放置在母版页的codebehind中,从而使其适用于应用程序的所有页面。您应该为所有动态页面启用缓存。ie You any page You don't want the web browser show old/out dated information.puh现在没有尝试过,但我会将它放在页面的PageLoad中,您需要检查用户是否登录。基本上是在用户单击其他页面上的后退按钮后显示的页面。这在大多数情况下只能防止出现问题。我见过一些客户端站点,在生成唯一/随机etag之前,这些站点都会缓存东西。由配置非常糟糕的代理服务器引起。