Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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
Ruby on rails 注销后,如果我按下后退按钮,我可以看到需要登录的最后一页_Ruby On Rails_Ruby On Rails 3_Devise_Browser Cache - Fatal编程技术网

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

Ruby on rails 注销后,如果我按下后退按钮,我可以看到需要登录的最后一页,ruby-on-rails,ruby-on-rails-3,devise,browser-cache,Ruby On Rails,Ruby On Rails 3,Devise,Browser Cache,我已经在我的web应用程序中配置了Desive。我对以下工作流有问题: 要访问管理面板,我需要登录。之后,我通常导航到我的web应用程序的管理面板。当我单击“注销”时,它会将我重定向到根页面,这是到目前为止我想要的行为 奇怪的事情开始于在这个页面中,在上面的操作之后,我单击浏览器的后退按钮,它显示了缓存的最后一个页面。我的会话已被破坏,因为如果我单击“刷新”,它会重定向我,并提到要登录以访问该页面,但我不想看到浏览器的最后一个历史页面 这怎么可能?我能做些什么来防止它?这和浏览器缓存有关,对吗?

我已经在我的web应用程序中配置了Desive。我对以下工作流有问题:

要访问管理面板,我需要登录。之后,我通常导航到我的web应用程序的管理面板。当我单击“注销”时,它会将我重定向到根页面,这是到目前为止我想要的行为

奇怪的事情开始于在这个页面中,在上面的操作之后,我单击浏览器的后退按钮,它显示了缓存的最后一个页面。我的会话已被破坏,因为如果我单击“刷新”,它会重定向我,并提到要登录以访问该页面,但我不想看到浏览器的最后一个历史页面


这怎么可能?我能做些什么来防止它?这和浏览器缓存有关,对吗?修复此问题的唯一方法是从登录页面中删除缓存以防止此行为?我该怎么做呢?

这肯定与缓存有关。您必须相应地设置相应的HTTP头。这可能就是您需要的答案:

  • 约翰尼斯

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

  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

您可以尝试告诉浏览器不要缓存内容,但事实就是这样,这是一次尝试

如果他们以前查看过该页面,那么您几乎无法强制执行无法再次查看该页面的操作—此时您可能无法控制该页面

例如,你可以下载页面的HTML(这是他们在查看页面时所做的),你也不能阻止他们拍摄屏幕截图


也就是说,浏览器缓存在某些(大多数?)情况下会起作用,请参考Michael Frederick的回答。

您可以查看这两个链接:[1][1]和[2][2]。[1] :[2]:您好,在witch controller中?在ApplicationController中如果我只想在注销后不缓存会发生什么?我认为这将在每次请求后删除缓存。什么是资产,它将被删除?