15

用户注销后,如果他们点击后退按钮,他们可以回到他们在注销之前的最后一页。

我正在开发的应用程序通常会在公共计算机(例如图书馆或计算机实验室)上使用,我想阻止用户看到以前用户会话中的任何内容。

我在 Rails 3 和 Devise 上,顺便说一句,虽然这个问题似乎会出现任何框架或登录机制。

是使用标头/元标记来禁用浏览器缓存的解决方案吗?有人知道解决此问题的 gem 或教程吗?

期待您的建议。

4

3 回答 3

7

在应用程序控制器中使用以下代码..它对我有用。希望这会帮助你。谢谢!!

代码

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
于 2014-06-05T11:10:20.147 回答
5

在 Rails 上,您可以轻松设置public文件夹中的所有内容,并使用积极的缓存,并挑选其他可以安全缓存的内容,例如公共“关于”页面。

您应该设置Cache-Control: no-cache以防止浏览器缓存包含敏感信息的 HTML 页面、XML、JSON(基本上只有通过正确登录才能访问的任何内容),并为 css 和图像等静态资产设置更积极的缓存。

  • 积极缓存的良好候选者是应用程序和公共页面中使用的 css 和图像。
  • 无缓存的良好候选者是登录后可访问的任何内容(即,如果您存储的图像只能由 tis 所有者访问,则不应缓存它,如果您对经过身份验证的用户有 Ajax 请求,则 XML 不应该被缓存)。
于 2010-12-06T01:06:02.647 回答
3

是的,您必须使用 http 标头来指示浏览器不要缓存页面。来自 OWASP 的此页面 ()包含有关如何执行此操作的信息。

根据上面的文章,您可以设置以下标头来指示浏览器不要缓存页面:

HTTP/1.1:
Cache-Control: no-cache

或者

HTTP/1.0:
Pragma: no-cache
Expires: <past date or illegal value (e.g., 0)>

希望这可以帮助。

于 2010-11-09T12:32:15.560 回答