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

Joh*_*Del 30 ruby-on-rails browser-cache devise ruby-on-rails-3

我已经在我的Web应用程序中配置了设计.我有以下工作流程的问题:

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

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

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

Mic*_*ick 59

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

  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
Run Code Online (Sandbox Code Playgroud)

信用转到该线程的第一个响应.

  • 如果我只想在注销后不缓存会怎么样?我想这会在每次请求后删除缓存.什么是资产,它将被删除? (5认同)

Sco*_*ess 5

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

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

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

那说浏览器缓存可以在一些(大多数?)情况下工作,参考迈克尔弗雷德里克的答案.