Session 经典ASP注销过程

Session 经典ASP注销过程,session,asp-classic,logout,Session,Asp Classic,Logout,我正在开发一个经典asp.NET开发的web应用程序。它在顶部菜单上有一个注销按钮,主要执行以下操作 会话.放弃() 重定向到Index.asp,用户可以在其中再次登录 注销后,用户返回index.asp。但如果用户单击浏览器上的“后退”按钮,他们将转到上一页。我不想发生这种事。我想要一条消息说他们已经注销了 1.在每页顶部添加Response.Expires=-1和Response.CacheControl=“无缓存”。 2.在每个页面上,我检查会话对象以查看它是否为空。如果为空,我将创建一条

我正在开发一个经典asp.NET开发的web应用程序。它在顶部菜单上有一个注销按钮,主要执行以下操作

  • 会话.放弃()
  • 重定向到Index.asp,用户可以在其中再次登录
  • 注销后,用户返回index.asp。但如果用户单击浏览器上的“后退”按钮,他们将转到上一页。我不想发生这种事。我想要一条消息说他们已经注销了

    1.在每页顶部添加
    Response.Expires=-1
    Response.CacheControl=“无缓存”
    。 2.在每个页面上,我检查会话对象以查看它是否为空。如果为空,我将创建一条消息,说明他们已注销,需要重新登录

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

    有什么想法我可以更好地实现这一点


    谢谢。

    你不能阻止用户后退。解决这一问题的常见方案是,POST针对的服务器页面不显示输出,而是重定向到一个新位置(可以看到结果)。

    还有其他非缓存声明,有时会有所帮助:

    Response.Expires = 0
    Response.AddHeader "pragma","no-cache"
    Response.AddHeader "cache-control","private"
    Response.CacheControl = "no-cache"
    
    我之前确实读过(因此无法找到链接)将expires设置为-1会导致某些浏览器忽略它,而不是让它立即过期

    即使添加这些额外的缓存控件,也不会阻止某些浏览器在某些时候缓存某些内容。FF通常会忽略用户强制重新加载缓存,因此在一定程度上,您处于浏览器中

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

    “网页已过期”和类似消息表明,用户返回的页面是发布的结果,浏览器认为页面状态已经更改,或者重新发布原始请求可能会导致web应用程序出现问题。