2012-07-01 16 views
27

我的设计配置在我的web应用程序中。我有以下工作流程的问题:注销后,如果我推回按钮,我可以看到需要登录的最后一页

对于访问管理面板我需要登录。之后,我通常会导航到我的网络应用的管理面板。当我点击注销时,它会将我重定向到根页面,这是我到目前为止所需要的行为。

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

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

+0

你可以切换到SSL吗? –

+1

您可以检查这两个链接:[1] [1]和[2] [2]。 [1]:http://stackoverflow.com/questions/4120289/how-to-clear-browser-cache-after-user-logout-to-prevent-access-to-private-info- v [2]:http://stackoverflow.com/questions/711418/how-to-prevent-browser-page-caching-in-rails – tiktak

回答

53

你要设置你的页面的标题以防止缓存。你可以这样做:

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的第一个响应。

+0

你好,女巫控制器? – Zakos

+0

在ApplicationController中 – inquisitive

+4

如果我只想在注销后不使用缓存,会发生什么情况?我认为这会在每次请求后删除缓存。什么是资产,它会被删除? – fabricioflores

5

你可以尝试告诉浏览器不要缓存东西,但这就是它 - 尝试。

如果他们以前浏览过网页,那么您可以做的事情很少,以致无法再次看到网页 - 这一点在您的控制之下。

例如,可以下载页面的HTML(这是他们在浏览页面时所做的),而且您也无法阻止他们说出截图。

这表示浏览器缓存将在一些(大多数?)情况下工作,请参阅Michael Frederick的答案。

相关问题