注销后,如果我按下按钮,我可以看到需要登录的最后一页

时间:2012-07-01 10:11:31

标签: ruby-on-rails ruby-on-rails-3 devise browser-cache

我已在我的网络应用程序中配置了设计。我在以下工作流程中遇到问题:

要访问管理员面板,我需要登录。之后,我正常导航到我的网络应用程序的管理面板。当我单击logout时,它会将我重定向到根页面,这是我想要的行为。

奇怪的是,在这个页面中开始,在上述操作之后,我点击了浏览器的后退按钮,它显示了我的缓存的最后一页。我的会话已被破坏,因为如果我点击刷新它重定向我并提示登录访问该页面,但我不希望能够看到浏览器的最后一个历史页面。

这怎么可能,我该怎么做才能防止它?它与浏览器缓存有关吗?解决此问题的唯一方法是从登录页面中删除缓存以防止此行为?我怎么能这样做?

3 个答案:

答案 0 :(得分:58)

您希望设置页面标题以防止缓存。你可以这样做:

  before_filter :set_cache_buster

  def set_cache_buster
    response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
    response.headers["Pragma"] = "no-cache"
    response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
  end

归功于this thread的第一个回复。

答案 1 :(得分:5)

您可以尝试告诉浏览器不要缓存内容,但这就是它的尝试。

如果他们之前查看了该页面,那么您可以执行的操作几乎无法再次查看该页面 - 此时它有点无法控制。

例如,可以下载页面的HTML(这是他们查看页面时正在做的事情)而且你也无法阻止他们说出截图。

那说浏览器缓存可以在某些(大多数?)情况下使用,请参阅Michael Frederick的回答。

答案 2 :(得分:3)

这肯定与缓存有关。您必须相应地设置适当的HTTP标头。这可能是您需要的答案:How to prevent browser page caching in Rails

  • 约翰内斯