2011-01-21 81 views
1

我正在开发一个Web应用程序开发经典的ASP。它已注销顶部的菜单基本上会执行下列操作经典ASP注销过程

  1. Session.Abandon()
  2. 重定向到的index.asp,用户可以再次登录按钮。

注销用户后返回到index.asp。但如果用户点击返回按钮浏览器,他们会转到上一页。我不希望发生这种情况。我想要一条消息说他们已经注销。我已经实施了以下步骤

1.在每个页面的顶部添加Response.Expires=-1Response.CacheControl="no-cache"。 2.在每一页我检查会话对象,看看它不是空的。如果为空,我将创建一条消息,说明它们已经注销并需要重新登录。

现在,当用户在注销后单击返回按钮,而不是显示注销的消息,我在IE8上收到“网页过期”消息。当用户在登录后在某个页面上点击返回按钮时,我会看到相同的行为。

任何想法,我可以如何实现这一点更好。

谢谢。

+0

“网页过期”和类似的消息指示用户返回到POST的结果的页面,并且浏览器假定页面状态已经改变或者重新发布原始请求可能导致问题在Web应用程序中。 – 2011-01-21 11:41:24

回答

1

您无法停止用户后退。解决此问题的常见方案是,POSTs将目标服务器页面显示为不显示输出,而是重定向到新位置(可以看到结果)。

1

有额外的非缓存声明有时候帮助:

Response.Expires = 0 
Response.AddHeader "pragma","no-cache" 
Response.AddHeader "cache-control","private" 
Response.CacheControl = "no-cache" 

我看过前一段时间(因而无法找到链接),设定一个到期-1可能会导致一些浏览器忽略它,而不是它立即过期。

即使添加这些额外的缓存控件也不会阻止某些浏览器在某些时间缓存某些内容。 FF经常会忽略用户强制高速缓存重新加载,因此您在浏览器中的某种程度上可以使用。

关于您的“网页过期”消息,这是(如上所述)浏览器试图阻止您重新提交POST数据(并可能重复您上次所做的操作)的结果。解决这个问题的最好方法是解决表单上其他一些常见的UI问题,然后POST回到同一个页面,然后如果/当操作完成时,使用response.redirect到同一页面,也许用URL编码的消息说“全部成功”。这使您的用户可以刷新并帮助解决后退按钮问题,因为大多数浏览器现在都不会在其历史记录中正确存储重定向的页面。