【发布时间】:2012-08-02 11:47:52
【问题描述】:
我知道以前有人问过这个问题,但我对最佳方法感到困惑,所以请原谅我再次问...
我有一个 MVC3 应用程序,它将成为一个外联网,允许用户通过表单身份验证登录。用户将访问机密信息,因此,为了防止有人在他们注销后点击返回(并且我注销 FormsAuthentication),我禁用了所有缓存,强制重定向到登录页面。
从安全的角度来看,一切都很好,但我的问题是我想缓存页面的非安全元素,例如图像、背景、徽标等。
目前,每个页面都呈现出难看的闪烁,因为每次都在下载我的所有作品。
当然,这也会对带宽产生负面影响。
如何控制缓存,以使艺术品、css、脚本等得到缓存,同时防止在 FormsAuthentication SignOut 问题后出现可怕的返回按钮?
提前谢谢你,
西蒙。
【问题讨论】:
-
您是否尝试在您的静态内容的 iis 自定义标头部分中为将来的日期添加过期标头?
-
您好,我实际上创建了一个新的 SecureController 类,它是 Controller 的后代。在重写的 OnResultExecuting 方法中,我有以下代码可以关闭所有缓存:'Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1)); Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache); Response.Cache.SetNoStore();'我应该在哪里设置静态内容的过期标头?
-
我相信 John Mitchell 的回答更好地解释了我的问题。您的代码只影响 html 页面输出,它应该影响静态内容。
标签: c# asp.net-mvc security caching formsauthentication