Ruby on rails 注销后,如果我按下后退按钮,我可以看到需要登录的最后一页
我已经在我的web应用程序中配置了Desive。我对以下工作流有问题: 要访问管理面板,我需要登录。之后,我通常导航到我的web应用程序的管理面板。当我单击“注销”时,它会将我重定向到根页面,这是到目前为止我想要的行为 奇怪的事情开始于在这个页面中,在上面的操作之后,我单击浏览器的后退按钮,它显示了缓存的最后一个页面。我的会话已被破坏,因为如果我单击“刷新”,它会重定向我,并提到要登录以访问该页面,但我不想看到浏览器的最后一个历史页面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应用程序的管理面板。当我单击“注销”时,它会将我重定向到根页面,这是到目前为止我想要的行为 奇怪的事情开始于在这个页面中,在上面的操作之后,我单击浏览器的后退按钮,它显示了缓存的最后一个页面。我的会话已被破坏,因为如果我单击“刷新”,它会重定向我,并提到要登录以访问该页面,但我不想看到浏览器的最后一个历史页面 这怎么可能?我能做些什么来防止它?这和浏览器缓存有关,对吗?
这怎么可能?我能做些什么来防止它?这和浏览器缓存有关,对吗?修复此问题的唯一方法是从登录页面中删除缓存以防止此行为?我该怎么做呢?这肯定与缓存有关。您必须相应地设置相应的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中如果我只想在注销后不缓存会发生什么?我认为这将在每次请求后删除缓存。什么是资产,它将被删除?